Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(Integer同士の演算が可能?)
閲覧数:1124
掲示板(Integer同士の演算が可能?)
名前
題名 Integer同士の演算が可能?
質問内容

質問を評価する
(0ポイント)
Integer i1 = new Integer(5);
Integer i2 = new Integer(3);
         
System.out.println(i1+5);
System.out.println(i1+i2);
System.out.println(i1.intValue()+i2.intValue());


開発環境はEclipseです。コンパイラの種類の見方はわかりません。
Integerクラスにかぎらず、大体のラップクラスがなら、計算することがで
きました。オブジェクト同士の演算が可能なのはどういう仕組なのでしょ
うか?ラップクラスは特別ということでしょうか?
Javaは演算子のオーバーロードはできませんよね?
質問日時 2013-08-05 20:30:13
名前
回答内容

回答を評価する
(30ポイント)
Java 5 以降では仕様で定まっています。

+ 演算子の右辺左辺のどちらかが String 型の場合は String の
連結として扱われます。このときもう一方が String でない場合
String に変換されます。

そうでない場合は両辺とも数値または数値に変換可能でないと
コンパイルエラーになります。
数値として扱えれば足し算になります。

詳しくは仕様をお読みください。
http://docs.oracle.com/javase/specs/index.html
+ 演算子の項目
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.18
回答日時 2013-08-05 21:20:18
名前
回答内容

回答を評価する
(0ポイント)
仙人さんありがとうございます。

計算以外(String)の足し算も気になっていたので、解
決してよかったです。
仕様書が英語なので、まだ完全に読めていないです。
でも、仙人さんの回答で+演算子については大体わかり
ました。
仕様書の何処かに書いてあるのだと思いますが、「数値
に変換可能」という判断はどのように行なっているの
か?ということがまだ少し疑問として残ってます。自作
のクラスでも実現可能なことなのかも合わせて気になり
ます。toString()のように自動的に呼び出されるメソッ
ド(?)があるのでしょうか。
じっくりと英語の仕様書を読んでみます。

ありがとうございました。
回答日時 2013-08-05 21:51:56

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道