###どんなコードを書いているのか
Javaのequalsメソッドを使い、2つのインスタンスが同じ内容であるかを判定するコードを書いています。
###実現したいこと
・なぜString型のデータ比較はequals()でできるのに、int型のデータ比較はequals()メソッドでできないのかを理解すること
発生している問題・エラーメッセージ
1.条件文では以下のように命令しました。 ・インスタンスh1とインスタンスh2の内容が一致⇒「同じ内容です」と出力 ・インスタンスh1とインスタンスh2の内容が不一致⇒「違う内容です」と出力する 2.インスタンスh1とインスタンスh2の内容が同じであるのに「違う内容です」と出力される。
該当のソースコード
(Main.java)
public class Main { public static void main(String[] args) { Hero h1 = new Hero(); h1.name = "minato"; h1.hp = 1000; Hero h2 = new Hero(); h2.name = "minato"; h2.hp = 1000; if(h1.equals(h2) == true) { System.out.println("同じ内容です"); } else{ System.out.println("違う内容です"); } } }
(Hero.java)
public class Hero { String name; int hp; }
試したこと
Main.java内の下記のコード1の部分をコード2のように変更しました。
//コード1 if(h1.equals(h2) == true) { System.out.println("同じ内容です"); } else{ System.out.println("違う内容です"); //インスタンスの内容がすべて一致しているにもかかわらず「違う内容です」と出力 } ``` ↓ ↓ ↓ ``` //コード2 if(h1.name.equals(h2.name) == true) { System.out.println("同じ内容です"); }else{ System.out.println("違う内容です"); } //「同じ内容です」が出力 if(h1.hp.equals(h2.hp) == true) { System.out.println("同じ内容です"); }else{ System.out.println("違う内容です"); } //エラー発生!!(equals(int) を基本タイプ int で起動できません)とEclipse上で表示される ``` ###それでも分からなかったこと **int型のデータ比較をequals()でなぜできないか** ###開発環境 PC環境:Windows8.1 64ビット Java環境:Eclipse
回答2件
あなたの回答
tips
プレビュー