2012-03-28 119 views
64
char c = '\u0000'; 

當我打印c時,它在命令行窗口中顯示'a'。字符的默認值是什麼?

那麼char類型字段的默認值是什麼?

有人說'\ u0000'表示unicode爲空;是對的嗎?

+0

您可以通過以下方式檢查您的char是否具有默認值:'char == 0' – ACV 2016-05-02 19:50:44

回答

78

如Java語言規範§4.12.5 Initial Values of Variables中所述,char屬性的默認值確實爲'\u0000'(空字符)。

在我的系統中,行System.out.println('\u0000');打印了一個小方塊,意味着它不是一個可打印的字符 - 正如所料。

+9

需要注意的是''\ u0000''與'null'不是相同的值 – Edd 2014-11-06 16:00:51

+0

什麼是'null character'?這個問題的一些答案是將默認值作爲空字符。 – 2015-01-14 05:11:23

+1

@ÓscarLópez,char'\ 0'怎麼樣?他們是不一樣的 ? – Tarik 2015-01-14 14:16:03

20

'\ u0000'是一個字符的默認值。它的十進制等效值爲0.

當您聲明某個字符變量而未初始化它時,缺省情況下會爲其分配'\ 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); 
    } 
} 

這段代碼打印最後打印。

7

'\u0000'代表null。所以如果你打印一個未初始化的char變量,你什麼也得不到。

+2

實際上你會得到一個編譯錯誤;)'\ u0000'是字符字段'初始化'的默認值, – Edd 2015-01-15 16:10:18

0

默認字符是int值爲0(零)的字符。

char NULLCHAR =(char)0;

char NULLCHAR ='\ 0';

0

其誘人的說是空白或者整數0按以下證明

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

,但我不會這麼說,因爲它可能會有所不同它不同的平臺或將來。我真正關心的是我永遠不會使用這個默認值,所以在使用任何字符之前,只要檢查它是否是\ u0000,然後用它來避免程序中的誤解。就這麼簡單。

1

char數據類型的默認值是'\ u0000'(或0),最大值是'\ uffff'(或65,535)。

你可以看到信息here。性格

+1

這個問題已經有一個被接受的答案加上其他答案。爲了您的答案有用,它應該爲問題添加有用的新信息或新的見解。只是在其他答案中重複信息是沒有用的。 – AdrianHHH 2014-12-10 16:17:14

5

默認值爲Character.MIN_VALUE其內部表示爲MIN_VALUE = '\u0000'

此外,您可以檢查字符字段包含默認值

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

} 
0

注意,有一個明顯的區別在零和零之間。 在http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html(引用上面)中,聲明爲: -

還有一個特殊的空字面值,可以用作任何引用類型的值。 null可以被分配給任何變量,除了基本類型的變量。除了測試它的存在之外,你可以用null值做很少的事情。因此,程序中通常使用null作爲標記來指示某個對象不可用。

這就是爲什麼下面的語句會給你一個錯誤,而不是其他: -

一個字符= NULL; //類型不匹配:不能從null轉換爲char。

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

0

我認爲這是'\u00000'或者只是'',而不是'\u0000' (一日一有5個零,而最後一個有四個零。)

+0

@ JohannesH.-這看起來像是對我的回答。將此標記爲「不是答案」是不正確的IMO。 – Krease 2016-06-06 05:34:49

1

\u0000是Java

對於char類型的默認值正如其他人提到的,您可以使用比較來檢查未初始化變量的值。

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

char默認值爲\ u0000的

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

這將返回真正

0

字符的默認值爲null是 '\ u0000的' 按Unicode chart。讓我們看看它在打印時的工作原理。

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(); 
    } } 

注意:輸出爲空白。