String.valueOf(char)和+的区别

时间:2012-09-25 15:30:28

标签: java string char default-value

显示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);
  }   
}

但是控制台输出很混乱。首先是“。” ,然而第二个是“默认字符是[](像这样,我不知道如何描述它。)”为什么?感谢您的帮助

3 个答案:

答案 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”。