字符1与数字1的区别
1.java 代码
不废话,直接上程序题。
package test;
public class TestStringTokenizer {
public static void main(String args[]) {
char c1 = '1' ;
System.out.println("c1 = "+(int)c1);
System.out.println("c1 = "+Integer.valueOf(c1));
System.out.println("===================");
char c2 = 1 ;
System.out.println("c2 = "+(int)c2);
System.out.println("c2 = "+Integer.valueOf(c2));
}
}
注意在程序中,定义了两个字符,分别是c1,c2
。其中 c1='1',c2=1;
但是我们执行程序之后,发现得到的结果如下:
发现两者的实际意义却是不一样的。
c1
表示的是字符0。但是c2
表示的就是数字0。
2.c 代码
看完Java
代码之后,再看看C
语言的表述。如下:
可以看到因为%c, %d
的问题,可以将这个c1
正常输出,但是因为将一个字符c2,定义成了底层的存储1,所以导致输出的就是一个你看不懂的乱码。
原因
引起这个现象的底层原因是:
char字符的存储在底层实际上是int
型。所以导致出现这个问题。