java中的char

char a='\U000d';为什么会编译失败

这是java编译器的一个缺陷,
你不能使用 Unicode的换行,斜杠等字符,至于为什么,举个例子:
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
你可以运行上面的方法,会输出 false is true!
java在编译时会先将Unicode字符进行 呈现(或翻译),然后再进行编译 ,上面的方法会变成

public static void main(String[] args) {
if ( false == true ) { //these characters are magic:
}{
System.out.println("false is true!");
}
}

再来看你的代码
char a='\U000d';

会变成:
char a='
';

这样就会产生语法错误。
这就是原因了

下面的代码是可以通过编译的
char c=' ';\u000d;
可以这样理解,代码中的 Unicode并不能理解为单纯的 字符或字符串,他们本身就是你的代码
如:
System.out.println("Unicode print ");
这一行代码你可以写成
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u0020\u0070\u0072\u0069\u006e\u0074\u0020\u0022\u0029\u003b\u0020
其实都是一样的,只是书写和查看都很不方便 。
建议不要在代码中书写Unicode形式的字符,很容易产生奇怪的错误,而且不方便查看和修改
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-01
char是用来定义字符的,char a='\U000d'的话我们可以解释为a为‘U000d’但是一个char是放不下这么多字符的,所以你要用char来存放ascii码这个想法本身就是 错误的
第2个回答  推荐于2017-09-10
java 中的 char 是16位整数,代表 UNICODE 字符,相当于C里面的16位无符号整数

其他语言如 c/C++ 中字符都是8位有符号数。
第3个回答  2012-11-01
....
看上去你知道char是用来定义一个字符属性的。
。。。
后面虽然他代表了一个字符。但是java不能识别。本回答被网友采纳
第4个回答  2012-11-01
char的单引号里面只能有一个字符
相似回答