为了显示 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);
}
}
但控制台输出很困惑。第一个是“. .” ,但是第二个是“默认字符是[](像这样,我不知道如何描述它。)”为什么?谢谢帮助
最佳答案
如 user1681360 所述,它是您正在打印的字符 '\0'
。您还没有初始化您的字段,所以 Java 为您将它初始化为默认值,不可打印的字符 '\0'
。根据环境的不同,不可打印的字符会显示为空框、问号等。
在第一行中,您首先创建一个 String
,然后附加它。在第二行中,运算符 String + char
被编译为 java.lang.StringBuilder#append(char)
,因此您直接将一个字符附加到缓冲区,而不是创建一个临时的 String
。
事实上,这两种方法总是等价的,即使有问题的字符是'\0'
。字符 '\0'
在 Java 语言规范中有特殊处理,但这不会影响此特定行为。
关于java - String.valueOf(char) 和 + 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586248/