前提
javaでString型での文字列の取り扱いと、等価演算子「==」と、equalsメソッドの違いについて学習しています。以下のソースコートを実行すると、出力結果が「あり得ない?」になります。
String型と、配列が参照型で、「==」を使うと値ではなく参照している場所を比較することは理解しているのですが、forループ内でi=2となった時、なぜ、「myname == myNames[2]」がtrueと評価され、現在の出力結果になるかがわかりません。なぜ、そうなるか、様々な情報を調べましたが、謎が解けていません。なぜここの「myname == myNames[2]」がtrueになるのか、説明がつくようにしたいので、知識を貸してください。お願いします。
実現したいこと
「myname == myNames[2]」がなぜtrueと評価されるのか理解したい
該当のソースコード
言語:java
public class main {
/**
* @param args
*/
public static void main(String[] args) {
String myname = "佐藤";
String[] myNames = {"伊藤","加藤","佐藤"};
for(int i=1; i < myNames.length; i++){ if(myname == myNames[i]) { System.out.println("あり得ない?"); } else if(myname.equals(myNames[i])) { System.out.println("myname:"+myname); } } }
}
試したこと
デバッグを行い、一行ずつ見てみましたが、わかりません