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

时间:2016-02-05 07:29:29

标签: java

我刚刚执行了以下代码,

char a=5;
System.out.println(a);

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

8 个答案:

答案 0 :(得分:5)

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

因为它是一个整数类型,你可以为它分配一个整数。例如,由于字符'A'由Unicode中的整数65表示,因此语句c = 65;c = 'A';完全等效。

因此该计划没有任何违法行为。但是Unicode中的字符5(以前是ASCII格式)是一个"控制字符"当你打印它时,它并没有显示出来。

答案 1 :(得分:1)

代码是有道理的。

您正在使用Unicode代码点5(与ASCII code 5相同)创建一个字符,这是一个不可打印的字符。

在其他情况下(不打印它)这样做可能是有意义的,而且对于可打印的字符肯定是有道理的。

如果你想打印数字“五”,你可以

char a = '5'; // using a character literal
char b = 53;  // using an integer literal (for the code point)

答案 2 :(得分:1)

  

char是0到65535范围内的无符号整数(我认为;它的0xffff),它打印出与该数字对应的Unicode字符,假设您的计算机支持Unicode。值0到127(0x7f)对应于Unicode的原始前体(ASCII),0到255(0xff)是扩展的ASCII。

char值已经是整数。你可以用它们算术。

答案 3 :(得分:1)

您正在将字符代码5分配给变量a。看一下这个ASCII Table。 ASCII 5是不可打印的,例如,如果将此值更改为35,则会打印出#。通过这种方式,Java(和其他语言)允许您对字符值执行算法。

    char a = 35;
    while (a < 100) {
        System.out.println(a);
        a++;
    }

答案 4 :(得分:0)

println打印一个值或对象。打印单个字符是支持 - 请参阅https://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#print(char),因此没有编译错误的原因。

它打印ASCII值为5的字符,字体中没有任何表示,因此您可以看到方框。

答案 5 :(得分:0)

您正在为char数据类型分配一个整数值,并且它将打印随机符号,因为编译器无法获取char“a”值的值。

答案 6 :(得分:0)

char a=5;完全有效。在Java中,字符不仅仅是单个字母,它也可以是ASCII字符的数字表示。 5是“查询”字符。如果设置char a = 126,您将获得波形符。

答案 7 :(得分:0)

此代码中没有错误。您可以为char变量分配int值。如果您可以通过分配一些int值来创建for循环,那么您也可以看到其他一些字符而不是框。