char的默认值是多少?


89
char c = '\u0000';

当我打印c时,它在命令行窗口中显示“ a”。

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

有人说'\ u0000'在Unicode中表示null;那正确吗?


您可以通过以下方式检查您的char是否具有默认值:char == 0
ACV

Answers:


105

正如Java语言规范第§4.12.5“变量的初始值”中所述,char属性的默认值确实是'\u0000'(空字符)。

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


26
重要的是要注意'\u0000'null
Edd 2014年

什么null character啊 该问题的一些答案是将默认值称为空字符。
Quazi Irfan

3
@ÓscarLópez,字符'\ 0'怎么样?他们是不一样的 ?
塔里克

5
@Tarik是的,他们是一样的。
奥斯卡·洛佩斯

3
@iamcreasy您所说的正确。我的笔记只是“空字符”是一个字符。它不是null用Java术语表示的,否则\u0000 == null会返回false
Edd

29

'\ 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);
    }
}

该代码将在最后一次打印时显示为true


9

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

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

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

}

7

'\u0000'代表null。因此,如果您打印未初始化的char变量,您将一无所获。


2
实际上,您会得到一个编译错误;)'\ u0000'是默认的值,其中char字段是使用
Edd

1
你什么也不会得到。您会得到一个空白或一个正方形。
Roshana Pitigala

如果我将c和c1都设为'\ u0000',则会得到“ 0”。System.out.println(c + c1);
alan


0

默认字符是int值为0(零)的字符。

char NULLCHAR =(字符)0;

char NULLCHAR ='\ 0';


0

它的诱人性表示为空格或以下证明的整数0

char c1 = '\u0000';
System.out.println("*"+c1+"*");
System.out.println((int)c1);

但我不会这么说是因为,不同的平台或将来可能会有所不同。我真正关心的是,我永远不会使用此默认值,因此在使用任何字符之前,请仅检查它是否为\ u0000,然后使用它以避免程序中的误解。就这么简单。


0

char数据类型的默认值为'\ u0000'(或0),最大值为'\ uffff'(或65,535(含))。

您可以在此处查看信息。


2
该问题已具有可接受的答案以及其他几个答案。为了使您的答案有用,应该为问题添加有用的新信息或新见解。仅在其他答案中重复信息是没有帮助的。
AdrianHHH 2014年

0

请注意,null和零之间有明显的区别。在http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html中(上面引用)中,该语句是:-

还有一个特殊的null文字可用作任何引用类型的值。可以将null分配给任何变量,原始类型的变量除外。除了测试空值的存在之外,您几乎无能为力。因此,在程序中经常使用null作为标记,以指示某些对象不可用。

这就是为什么以下语句会给您一个错误,而不是其他错误:-

char a = null; //类型不匹配:无法从null转换为char。

char b = 0; //有效的语法。


0

\u0000 是Java中char类型的默认值

正如其他人提到的,您可以使用比较来检查未初始化变量的值。

char ch;
if(ch==0)
    System.out.println("Default value is the null character");

-1

我认为它是'\u00000'或者只是''而不是'\u0000' (第一个1具有5个零,而最后一个具有4个零。)


@ JohannesH.-这似乎是对我的答案。将其标记为“不是答案”是不正确的IMO。
Krease

-1

默认值char\ u0000的

public class DefaultValues {
char varChar;
public static void main(String...l)
 {
    DefaultValues ob =new DefaultValues();
    System.out.println(ob.varChar=='\u0000');
 }  
}

这将返回true


-1

char的默认值为null,根据Unicode图表,其值为'\ u0000' 。让我们看看打印时它是如何工作的。

public class Test_Class {   
     char c;
     void printAll() {  
       System.out.println("c = " + c);
    }   
    public static void main(String[] args) {    
    Test_Class f = new Test_Class();    
    f.printAll();   
    } }

注意:输出为空白。


-2

如Java语言规范中所述,char基本类型的默认值为'\ u0000'(空字符)。

“ u0000”的快捷方式是“ \ 0”,因此可以用“ u0000”或“ \ 0”表示空值。

下面的Java程序使用实例char字段'c'验证空表示。

public class DefaultValueForchar {  
    char c;
    public static void main(String[] args) {
        char c0 = '\0';
        char cu0000 = '\u0000';
        DefaultValueForchar obj = new DefaultValueForchar();
        System.out.println(obj.c);
        System.out.println(c0);
        System.out.println(cu0000);
        System.out.println(c0==cu0000);
        System.out.println(obj.c==c0);
        System.out.println(obj.c==cu0000);
    }

}

输出:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.