显示char的默认值,我写了这样的代码:
public class TestChar {
static char a;
public static void main(String[] args) {
System.out.println("."+String.valueOf(a)+".");
System.out.println("the default char is "+a);
}
}
但是控制台输出很混乱。首先是“。” ,然而第二个是“默认字符是[](像这样,我不知道如何描述它。)”为什么?感谢您的帮助
答案 0 :(得分:2)
char不是String。在第一个print语句中,您将char转换为字符串,然后打印该值。在第二行中,您只是直接打印char的值。
答案 1 :(得分:2)
正如user1681360所述,它是您正在打印的字符'\0'
。您尚未初始化字段,因此Java会将其初始化为默认值,不可打印的字符'\0'
。根据环境的不同,不可打印的字符将显示为空框,问号等。
在第一行中,您首先创建一个String
,然后附加它。在第二行中,运算符String + char
被编译为java.lang.StringBuilder#append(char)
,因此您直接将一个字符附加到缓冲区,而不是创建一个临时的String
。
实际上,即使有问题的人物是'\0'
,这两种方法总是相同的。字符'\0'
在Java语言规范中有特殊处理,但这不会影响这种特定行为。
答案 2 :(得分:1)
你没有初始化a的值,所以它相当于char a = 0;不可打印的角色。
将值初始化为某个东西,例如static char a ='a';这应该会告诉你一些事情。
更新:因为第二个字符是不可打印的,所以它显示为正方形,但实际上是'\ 0'字符。
更新2:默认值为0,如数字0,而不是字符“0”。