字符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;​​但是我们执行程序之后,发现得到的结果如下:

字符1与数字1的区别_c语言

发现两者的实际意义却是不一样的。

​c1​​表示的是字符0。但是​​c2​​表示的就是数字0。

2.c 代码

看完​​Java​​代码之后,再看看​​C​​语言的表述。如下:

字符1与数字1的区别_java_02

可以看到因为​​%c, %d​​​的问题,可以将这个​​c1​​正常输出,但是因为将一个字符c2,定义成了底层的存储1,所以导致输出的就是一个你看不懂的乱码。

原因

引起这个现象的底层原因是:

char字符的存储在底层实际上是​​int​​型。所以导致出现这个问题。