IT転職・プログラミングスクール

String型とint型の正しい加算結果は?【Java Silver例題】

Java Silver 例題

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。

今回は、String型とint型を足し合わせたあとの正しい出力結果についてです。

 

問題:String型とint型の加算結果について

早速ですが、次の問題を解いてみください。

A.  25
B.  55555
C.  10510
D.  10555
E.  55510
F.  コンパイルエラー

 

いかがでしょうか。

このような処理はレアなケースですが、Java Silverでは正しい知識を持っておく必要があります。

 

この問題の答えは Dです。

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

String型とint型の加算のポイントと解説

出力処理ではint型の5String型の"5"が混在し、加算処理が行われています。

この問題を解くポイントは次の2つです。

ポイント

  • 加減算は左から順に処理される
  • int型とString型の加算の場合、int型はString型に変換される

 

加減算は左から順に処理される

次のように加減算が複数ある場合、左から順に処理されていきます。

int a = 1+1+1+1;

             ↓

int a = 2+1+1;

             ↓

int a = 3+1;

             ↓

int a = 4;

 

int型とString型の加算の場合、int型はString型に変換される

int型とString型の加算では、次のようにint型は暗黙的にString型に変換されます。

変換後、String型とString型になるので文字列の連結が行われます。

System.out.println(1+"a");

             ↓

System.out.println("1"+"a");   //出力結果 1a

 

String型を含んだ"+"の処理は文字列の連結を意味しますが、"-"は意味を持たない記号になってしまいます。

そのため、次のようなコードではコンパイルエラーになります。

System.out.println(1-"a");  //コンパイルエラー

 

解説

この問題は次のような構造となっています。

System.out.println(5+5+"5"+5+5);

(int型) + (int型) + (String型) + (int型) + (int型)

まず、1つ目のポイントの複数の加減算では左から処理されるより、左2つのint型の加算が行われます。

             ↓

System.out.println(10+"5"+5+5);

(int型) +  (String型) + (int型) + (int型)

次に左2つのint型とString型の加算が行われますが、ここで2つ目のポイントよりint型はString型に変換され、文字列の連結が行われます。

             ↓

System.out.println(10+"5"+5+5);

(String型) +  (String型) + (int型) + (int型)

System.out.println("105"+5+5);

(String型) + (int型) + (int型)

これ以降は、常にString型を含んだ加算が行われるためint型は全てString型に変換され、文字列の連結のみが行われます。

System.out.println("105"+"5"+5);

(String型) + (String型) + (int型)

System.out.println("1055"+5);

(String型) + (int型)

System.out.println("1055"+"5");

(String型) + (String型)

System.out.println("10555");

 

したがって、答えは「D.  10555」となります。

 

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

-IT転職・プログラミングスクール
-,

Copyright© 人生2段飛ばし , 2020 All Rights Reserved Powered by AFFINGER5.