いつもお世話になっております。
コンスタントプールの仕組みがいまいちわかりません。
下記のコードにはなぜコンスタントプールが適用されないのでしょうか?
結果は false:trueです。
package zzz; public class ZZZ { public static void main(String[] args) { String str = "apple"; String[] array = {"a","p","p","l","e"}; String result = ""; for(String val : array){ result = result + val; } boolean a = str == result; boolean b = str.equals(result); System.out.println(a + ":" + b); } }
普段『==』は参照先が同じでない限りfalseを返し
そしてStringに関しては中身が違くともコンスタントプールの仕組みでtrueが返る
と理解していました。
説明文に
『このコンスタントプールは文字列リテラルを使った時だけ有効です』と書いてあります。
上記のコードだとstrもresultもString型だからtrue:trueかと思っていましたがどこの解釈がいけないのでしょうか?
すいませんがどなたかご教授お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/06 15:54 編集
2018/05/06 16:08
2018/05/06 16:11 編集
2018/05/06 16:21