public static void main(String[] args) {
char c = '\u0000';
//返回TRUE,说明相等
System.out.println(c == (char) 0);
//一个是空字符,一个是空格,查ASCII码表知道的
System.out.println((char) 0);
System.out.println((char) 32);
//疑问1: 为什么打印出的都是空格,但是前后的AB字母字体不一样
System.out.println("a" + String.valueOf((char) 32) + "b");
System.out.println("a" + String.valueOf((char) 0) + "b");不是空格,而是显示不出来的字符。IDE引起
http://topic.youkuaiyun.com/u/20110904/10/78b30f9f-46c4-4a1b-951a-cd94838b9d57.html?834
//既然\u0000是空字符,为什么有长度1
System.out.println(String.valueOf((char) 0).length());
System.out.println(String.valueOf((char) 32).length());
}
知识点1:
trim是把小于\u0020都的字符都去掉了
知识点2:
系统的问题,(char)0本身是个字符,变成字符串有长度是可以理解的,但是(char)0是个非显示字符,所以打印时看不出来的,包括打印到文件也看不出来(如果用二进制的方式打开文件能看到相应的字节码,但是字符本身没有被显示出来)。
10L的代码在winxp上可以的,但是在Win7上不行,也就是说java在win7系统上作了特殊处理,把原来的非显示字符用空格代替显示出来了。
System.out.println(String.valueOf((char)0).length());
System.out.println(String.valueOf((char)0).trim().length()); //trim以后发现不一样了。
——》字符类型(char):
n字符型数据代表16位的Unicode字符
n字符常量是用单引号括起来的一个字符
n‘a’ ‘B’ ‘\n’ ‘\u0030’
n字符型数据的取值范围为
n0~65535或者说\u0000~\uFFFF
n\u0000为缺省值
n示例
ncharc1;\\缺省值为0
ncharc2 = ‘0’;\\赋初值为字符‘0’
ncharc3 =32;\\用整数赋初值为空格