質問

こちらのコードスニペット:

public static void main (String[]arg) 
{
    char ca = 'a' ; 
    char cb = 'b' ; 
    System.out.println (ca + cb) ; 
}

の出力です:

195

それはなぜだ?いると考え 'a' + 'b' いずれ "ab" , "12"3.

していただきましたか。

役に立ちましたか?

解決

+ 二つの char は算数、文字列連結した.何かをしなくてはならないように "" + ca + cb, 使 String.valueOfCharacter.toString るための方少なくとも一つのオペランドの +String のオペレーターする文字列連結した.

環太平洋の15.18添加剤事業者

場合にはいずれかのオペランドの + オペレーターが String, その操作文字列を連結した.

そうしないタイプの各オペランドの + オペレーターでなければなタイプに転換できるプリミティブの数値タイプ、またはコンパイル時にエラーが発生します。

ぜいただけます(195ですがASCII 'a' = 97'b' = 98, は、 97 + 98 = 195.


この行の基礎 intchar 鋳物製となります。

 char ch = 'a';
 int i = (int) ch;   
 System.out.println(i);   // prints "97"
 ch = (char) 99;
 System.out.println(ch);  // prints "c"

この無視し、問題の文字エンコーディングスキーム(初心者にはな...真.


また、ジブロッホかっていることは残念なが + が多重定義されています両方の文字列の連結および整数を追加"されている誤り過負荷の+演算子の文字列を連結した." -- Java Puzzlers, パズル11:最後の笑)。多くの種類の混乱がって簡単に回避の異なるトークン文字列を連結した.


参照

他のヒント

私は、Javaを話すことはありませんが、195は+ 98 97 = abのためのASCIIコードです。だから、明らかに、cacbは、おそらく自動的に文字列連結につながるとは思えない+添加の、その整数値として解釈されます。

あなたがオペランドとしてString型を使用する必要が+演算子の結果として文字列を持っているしたい場合。

あなたは書く必要があります:

public static void main (String[]arg) 
{
    String ca = "a" ; 
    String cb = "b" ; 
    System.out.println (ca + cb) ; 
}

+演算子は算術和として動作チャーオペランドに適用した。

それは、文字列の上にないように

+演算子は、文字の上に動作しません。 97と98 - - 何をここで起こっていることはabは、その整数のASCIIコードポイントにキャストされていることである。その後、一緒に追加

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top