2016-05-10 102 views
3
public static void main(String[] args) { 
    char[] array = new char[2]; 
    array[0] = 'a'; 
    String s = new String(array); 
    assert s.length() == 2; 
    System.out.print(">" + s + "<\n"); 
    System.out.print(">" + s.substring(1) + "<\n"); 
    System.out.print("end of test.\n"); 
} 

的輸出是:如果Java打印NUL字符會怎麼樣?

>a 
> 
end of test 

不同於C,在Java字符串不是空字符結束,因此斷言是真實的。爲什麼Java不打印<分隔符號?

編輯:可能相關的是,這是在Eclipse 4.5.1在Ubuntu 14.04。

+3

它爲我打印出來。它可能是你的終端導致它嗎? – resueman

+0

對我來說很好用 –

+0

對我來說也適用 – mhyst

回答

3

我已經在Eclipse中測試你的代碼,一切似乎優秀作品。

但是,如果我複製/粘貼Eclipse控制檯輸出,並將其粘貼在文本編輯器,你只提了什麼>a它粘貼。

我甚至粘貼這個從Eclipse控制檯複製/粘貼的>a(當我看到>a < ...看看我的屏幕截圖)。

所以,我說這個小代碼段代碼:

String f = " >" + s + "<\n"; 
for (int i=0; i < f.length(); i++) { 
    System.out.println((int)f.charAt(i)); 
} 

這是ASCII碼:

32 
62 
97 
0 
60 
10 

我覺得你的控制檯有衝突打印NUL(或0)字符。另外,我在Windows上測試了這個功能,所以Windows的中間有NUL複製/粘貼字符串問題並不會讓我感到驚訝。

這是從我的Eclipse和輸出截圖: enter image description here

+0

有趣的是,不可打印的null佔用了控制檯上的空白。我不會期待這一點。在我的控制檯上,沒有空白。 – H2ONaCl

+0

@ H2ONaCl它也引起了我的注意,但最引起我注意的是......將內容複製並粘貼到文本編輯器中。看來剪貼板borked用'NUL'字符 –

+0

路過的時候'NUL'字符的事情,即使這些字符串通常不是以空值終止,因爲一切都當了'NUL'丟失後,我已經看到了,有時奇怪的事情發生字符串被轉換爲C字符串。 – NobodyNada

0
>a < 
    > < 
    end of test 

我不能複製你的輸出中 - 這是我得到的BlueJay,Eclipse中,和NetBeans輸出。你是否嘗試過在不同的IDE中確認每次都發生這種情況?

+0

如果它在命令行上工作,那麼我不會擔心IDE太多。 – H2ONaCl

+0

@ H2ONaCl好吧。乾杯 - 很高興聽到它在那裏工作 –

+0

我的命令行打印'> a <'。與你的不完全一樣。 – H2ONaCl

相關問題