什么是char的默认值?

use*_*336 78 java char

char c = '\u0000';
Run Code Online (Sandbox Code Playgroud)

当我打印c时,它在命令行窗口中显示"a".

那么char类型字段的默认值是什么?

有人说'\ u0000'在unicode中表示无效; 是对的吗?

Ósc*_*pez 96

char属性的默认值确实是'\u0000'(空字符),如Java语言规范,第4.12.5"变量的初始值"一节中所述.

在我的系统中,该行System.out.println('\u0000');打印一个小方块,这意味着它不是可打印的字符 - 正如预期的那样.

  • 重要的是要注意''\ u0000'`与'null`的值不同 (19认同)
  • @Tarik是的,他们是一样的. (4认同)
  • @ÓscarLópez,char'\ 0'怎么样?他们是不一样的 ? (2认同)
  • @iamcreasy你说的是对的.我的注释只是'空字符'是一个字符.在java术语中它不是"null",即`\ u0000 == null`将返回`false` (2认同)

Cha*_*har 28

'\ u0000'是字符的默认值.其十进制等值为0.

当你声明一些char变量而不初始化它时,默认情况下会为它分配'\ u0000'.

看到这段代码

public class Test {
    char c;

    public static void main(String args[]) throws Exception {
        Test t = new Test();
        char c1 = '\u0000';
        System.out.println(t.c);
        System.out.println(c1);
        System.out.println(t.c == c1);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码将在最后一次打印时打印为true.


Yog*_*are 8

Character的默认值是Character.MIN_VALUE,内部表示为MIN_VALUE = '\u0000'

此外,您可以检查字符字段是否包含默认值

Character DEFAULT_CHAR = new Character(Character.MIN_VALUE);
if (DEFAULT_CHAR.compareTo((Character) value) == 0)
{

}
Run Code Online (Sandbox Code Playgroud)


ros*_*han 7

'\u0000'代表null.因此,如果您打印一个未初始化的char变量,您将什么也得不到.

  • 实际上你会得到一个编译错误;)'\ u0000'是一个char字段'初始化'的默认值 (2认同)