[英]the difference of String.valueOf(char) and +
為了顯示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);
}
}
但是控制台輸出很混亂。第一個是“。”。 ,但是第二個是“默認字符為[](像這樣,我不知道如何描述它。)”為什么?感謝幫助
字符不是字符串。 在第一個打印語句中,您將char轉換為字符串,然后打印該值。 在第二行中,您只是直接打印char的值。
如user1681360所述,它是您要打印的字符'\\0'
。 您尚未初始化字段,因此Java會為您將其初始化為默認值,即不可打印字符'\\0'
。 根據環境的不同,無法打印的字符將顯示為空框,問號等。
在第一行中,您首先創建一個String
,然后附加它。 在第二行中,運算符String + char
被編譯為java.lang.StringBuilder#append(char)
,因此您直接將字符附加到緩沖區,而不是創建臨時String
。
實際上,即使所討論的字符是'\\0'
,這兩種方法也始終是等效'\\0'
。 字符'\\0'
在Java語言規范中有特殊處理,但是不影響此特定行為。
您尚未初始化a的值,因此它等效於char a = 0; 不可打印的字符。
將值初始化為某種東西,可以說成靜態char a ='a'; 那應該告訴你一些東西。
更新:由於第二個字符不可打印,因此顯示為正方形,但實際上是'\\ 0'字符。
更新2:默認值為0(如數字0),而不是字符“ 0”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.