[英]the difference of String.valueOf(char) and +
为了显示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);
}
}
但是控制台输出很混乱。第一个是“。”。 ,但是第二个是“默认字符为[](像这样,我不知道如何描述它。)”为什么?感谢帮助
字符不是字符串。 在第一个打印语句中,您将char转换为字符串,然后打印该值。 在第二行中,您只是直接打印char的值。
如user1681360所述,它是您要打印的字符'\\0'
。 您尚未初始化字段,因此Java会为您将其初始化为默认值,即不可打印字符'\\0'
。 根据环境的不同,无法打印的字符将显示为空框,问号等。
在第一行中,您首先创建一个String
,然后附加它。 在第二行中,运算符String + char
被编译为java.lang.StringBuilder#append(char)
,因此您直接将字符附加到缓冲区,而不是创建临时String
。
实际上,即使所讨论的字符是'\\0'
,这两种方法也始终是等效'\\0'
。 字符'\\0'
在Java语言规范中有特殊处理,但是不影响此特定行为。
您尚未初始化a的值,因此它等效于char a = 0; 不可打印的字符。
将值初始化为某种东西,可以说成静态char a ='a'; 那应该告诉你一些东西。
更新:由于第二个字符不可打印,因此显示为正方形,但实际上是'\\ 0'字符。
更新2:默认值为0(如数字0),而不是字符“ 0”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.