1

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

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

4

3 回答 3

2

正如 user1681360 提到的,它是'\0'您正在打印的字符。您尚未初始化您的字段,因此 Java 为您将其初始化为默认值 unprintable character '\0'。根据环境,不可打印的字符将显示为空框、问号等。

在第一行中,您首先创建一个String,然后附加它。在第二行中,运算符String + char被编译为java.lang.StringBuilder#append(char),因此您直接将一个字符附加到缓冲区,而不是创建一个临时String.

事实上,这两种方法总是等价的,即使所讨论的字符是'\0'。Java 语言规范中对字符'\0'进行了特殊处理,但这不会影响此特定行为。

于 2012-09-25T15:43:43.150 回答
2

字符不是字符串。在您的第一个打印语句中,您将 char 转换为字符串,然后打印该值。在第二行中,您只是直接打印 char 的值。

于 2012-09-25T15:33:06.707 回答
1

你还没有初始化a的值,所以相当于char a = 0; 一个不可打印的字符。

将值初始化为静态字符 a = 'a'; 那应该告诉你一些东西。

更新:由于第二个字符是不可打印的,它显示为一个正方形,但它实际上是一个 '\0' 字符。

更新2:默认值为0,如数字0,而不是字符'0'。

于 2012-09-25T15:34:53.820 回答