1

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

しかし、コンソール出力は混乱しています。最初は「。。」です。、ただし、2番目は「デフォルトの文字は[]です(このように、説明する方法がわかりません)」です。なぜですか?助けてくれてありがとう

4

3 に答える 3

2

charは文字列ではありません。最初のprintステートメントでは、charを文字列に変換してから、値を出力します。2行目では、charの値を直接出力しています。

于 2012-09-25T15:33:06.707 に答える
2

user1681360が述べたように、それは'\0'あなたが印刷している文字です。フィールドを初期化していないため、Javaはフィールドをデフォルト値の印刷不可能な文字に初期化します'\0'。環境によっては、印刷できない文字は空のボックスや疑問符などとして表示されます。

最初の行では、最初にを作成しString、次にそれを追加します。2行目では、演算子String + charがにコンパイルされてjava.lang.StringBuilder#append(char)いるため、一時的なを作成するのではなく、バッファに文字を直接追加していますString

実際、問題のキャラクターがである場合でも、2つのアプローチは常に同等です'\0'。キャラクター'\0'はJava言語仕様で特別な扱いを受けていますが、それはこの特定の動作には影響しません。

于 2012-09-25T15:43:43.150 に答える
1

aの値を初期化していないため、char a=0と同等です。印刷できない文字。

値を何かに初期化すると、static char a='a';と言うことができます。それはあなたに何かを示すはずです。

更新:2番目の文字は印刷できないため、正方形として表示されますが、実際には「\0」文字です。

更新2:デフォルト値は0であり、数字の0のように、文字「0」ではありません。

于 2012-09-25T15:34:53.820 に答える