簡體   English   中英

String.valueOf(char)和+的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM