繁体   English   中英

String.valueOf(char)和+的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM