7

私は次のクラスを持っています:

   public class Go {
     public static void main(String args[]) {
      System.out.println("G" + "o");
      System.out.println('G' + 'o');
     }
   }

これがコンパイル結果です。

  Go
  182

出力に数値が含まれるのはなぜですか?

4

7 に答える 7

9

2 番目のケースでは、2 つの文字 (G - 71 と o - 111)のUnicodeコードを追加し、合計を出力します。これはchar、数値型と見なされるためです+。この場合、演算子は通常の合計です。

于 2012-08-23T05:41:33.507 に答える
2

+文字定数を指定した operator'G' + 'o'は、charCode の加算と、 will を指定した文字列連結演算子"G" + "o"出力しGoます。

于 2012-08-23T05:41:34.590 に答える
2

Java のプラスは、被加数の 1 つが文字列でない限り、2 つの数値を加算します。文字列の場合は、文字列連結を行います。

2 番目のケースでは、文字列がありません (がありchar、その Unicode コード ポイントが追加されます)。

于 2012-08-23T05:42:49.133 に答える
1
System.out.println("G" + "o");
  System.out.println('G' + 'o');

最初の + は連結演算子として機能し、2 つの文字列を連結します。しかし、2 番目のケースでは、加算演算子として機能し、これら 2 つの文字の ASCII (または UNICODE と言うことができます) 値を加算します。

于 2012-08-23T05:41:46.760 に答える
1

この前の SO の質問は、この件名にいくつかの光を当てる必要があります。あなたの場合、基本的に ASCII 値 (G の場合は 71) + (o の場合は 111) = 182 を追加することになります。ここで値を確認できます)。

を使用しString.valueOf(char c)て、その文字を文字列に戻す必要があります。

于 2012-08-23T05:46:01.253 に答える
0

+sumは、それが数値以外の場合は常に (2 つの数値を追加する目的で)String使用さStringれますString

Java の char は常に数値を表すことがわかっています

そのため、実際には(71+111)=182、文字の連結ではなく、2 つの数値の合計をg+ o=として計算します。go

それらの1つを次のように変更するとString、2つが連結さ れ、期待どおりSystem.out.println('G' + "o") に印刷されます。Go

于 2012-08-23T06:02:32.973 に答える
0

「+」演算子は、intとの両方に対して定義されていStringます。

int + int = int

String + String = String

char + char を追加すると、最適な一致は次のようになります。

(char->int) + (char->int) = int

しかし""+'a'+'b'、あなたに与えるでしょうab

( (String) + (char->String) ) + (char->String) = String
于 2012-08-23T06:08:54.313 に答える