タグ

ブックマーク / shogo4405.hatenadiary.com (1)

  • 技術って習ったことがすべてではないんだなぁ。 - Thousand Years

    僕はJavaで文字列の比較をするときは、String#equals()を使って比較するしなさいって習った。先生の説明に(文系の大学だけどなぜかJavaの講義があった)にも納得してString#equals()を使い続けてた。 Stringはプリミティブ値じゃなくてオブジェクトになるので==を利用すると、その文字の比較ではなくて同一参照か否かを確認するから結果はfalseになっちゃうよという説明。中途半端に知っていたのでその説明には納得。でも違った。 class Test { public static void main(String args[]) { String str1 = "Hello"; String str2 = "Hello"; if(str1 == str2){ System.out.println("実行されちゃう><。"); } String str3 = new S

    技術って習ったことがすべてではないんだなぁ。 - Thousand Years
    NOV1975
    NOV1975 2007/07/13
    これは違う。Javaにおいて、同じ文字列リテラルがある場合、実体が新たに生成されず、常に同じインスタンスを指す。だから、参照の値が一致しているだけだ。別に値を比較してくれているわけではない。
  • 1