为什么编译器不会为下面的代码提供copiler错误?

pra*_*y G -2 java

我刚刚执行了以下代码,

char a=5;
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

在eclipse中执行时,print语句只打印一个方框.它可能会给编译器错误吗?因为上面的代码没有任何意义..如果我错了请纠正我..

ajb*_*ajb 5

charJava中的类型有两种含义.它是一个整数类型(char可以具有0到65535之间的值),但其目的是表示Unicode字符(至少在基本多语言平面中).如果用它打印出来System.out.println,程序将打印由整数表示的字符,而不是整数本身.

但是,由于它是整数类型,因此可以为其指定整数.例如,由于该字符'A'是由以Unicode整数65所表示的,语句c = 65;c = 'A';完全等价的.

所以该计划没有任何违法行为.但是Unicode中的字符5(以前是ASCII格式)是一个"控制字符",在打印时它不会显示为任何内容.