注释代码在Java中给出编译错误?

注释代码在Java中给出编译错误?,java,compiler-errors,Java,Compiler Errors,您好,我正在创建一个简单的程序,在注释代码中出现了看不见的编译错误。我的代码如下: public class Static_Method_Call { public static Character character=getMe(); public static void main(String[] args) { System.out.println("Inside main() 1 : "+character);

您好,我正在创建一个简单的程序,在注释代码中出现了看不见的编译错误。我的代码如下:

public class Static_Method_Call
{               
    public static Character character=getMe();

    public static void main(String[] args)
    {
        System.out.println("Inside main() 1 : "+character); 
        //Static_Method_Call.character=new Character('\u000d'); 
        //System.out.println("Inside main() 2 : "+character);
    }

    static
    {
        System.out.println("Inside static block : "+character);
        Static_Method_Call.character=new Character('\u003d');       
    }

    public static Character getMe()
    {
        System.out.println("Inside getMe() : "+character);
        return new Character('\u002d');
    }
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Invalid character constant
错误如下:

public class Static_Method_Call
{               
    public static Character character=getMe();

    public static void main(String[] args)
    {
        System.out.println("Inside main() 1 : "+character); 
        //Static_Method_Call.character=new Character('\u000d'); 
        //System.out.println("Inside main() 2 : "+character);
    }

    static
    {
        System.out.println("Inside static block : "+character);
        Static_Method_Call.character=new Character('\u003d');       
    }

    public static Character getMe()
    {
        System.out.println("Inside getMe() : "+character);
        return new Character('\u002d');
    }
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Invalid character constant
这个错误在Java中意味着什么

\u000d是代表CR特殊字符的Unicode字符。即使在编译器转换源代码之前,此字符也会经过预处理,并导致源代码无效。因此,我猜在预处理时,注释行将类似于:

//Static_Method_Call.character=new Character('
 ');
因此出现了编译器错误。您可以使用\r添加回车符。

\u000d是一个Unicode字符,代表CR特殊字符。即使在编译器转换源代码之前,此字符也会经过预处理,并导致源代码无效。因此,我猜在预处理时,注释行将类似于:

//Static_Method_Call.character=new Character('
 ');

因此出现了编译器错误。您可以使用\r添加回车。

\u000d是一个换行符,因此下一行以“哪个未关闭”开头,这就是它所抱怨的。这里解释了这一点。

\u000d是一个换行符,所以下一行以“未关闭”开头,这就是它所抱怨的。此处对此进行了说明

您正在为角色提供方法的值。这是不可能的,但您的程序中还有更多错误。@user1758777否,OP正在将变量字符分配给静态方法getMe的返回值,该方法完全有效。请注意我的错误。阅读错误的代码忽略我的注释您正在给字符一个方法的值。这是不可能的,但您的程序中还有更多错误。@user1758777否,OP正在将变量字符分配给静态方法getMe的返回值,该方法完全有效。请注意我的错误。阅读错误的代码忽略我的评论基本上这一点,但它不应该是一个问题的评论;我想这是Java解析器的一个小问题。当这消除了编译问题,但没有回答眼前的问题时。基本上这是一个问题,但在注释中不应该是一个问题;我想这是Java解析器的一个小问题。当这消除了编译问题,但没有回答眼前的问题时。\u000d是一个回车符,但无论如何它在这里没有什么区别。请参阅。\u000d是回车,但无论如何,它在这里没有什么区别。看见