字符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型。所以导致出现这个问题。