- - PR -
標準入力から入力された文字列について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-06-23 14:26
初歩的な質問かもしれませんが、よろしくお願いします。
標準入力(コマンドプロンプト)から「abc」という文字列を入力して、 文字列リテラル"abc"と「==」で比較すると別物と判断されます。 しかし、String変数に文字列リテラル"abc"を直接入れたものと リテラル"abc"を比較した場合は、同一と判断されます。 この違いはどういう意味なのでしょうか? 教えて下さい。 ちなみに標準入力から入力された「abc」も 文字列リテラルの「abc」も toCharArray() では同じ結果(97,98,99)が得られます。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); // 画面から「abc」と入力 if (str1 == "abc") { System.out.println("同一"); } else { System.out.println("別物"); // 別物と判断される } String str2 = "abc" // コードから直接「abc」をセット if (str2 == "abc") { System.out.println("同一"); // 同一と判断される } else { System.out.println("別物"); } |
|
投稿日時: 2008-06-23 14:38
== はjava String の場合、equalsですね。
|
|
投稿日時: 2008-06-23 15:07
internプールについて調べると幸せになれるかもしれません。
http://www.google.co.jp/search?q=Java+intern%E3%83%97%E3%83%BC%E3%83%AB&btnG=%E6%A4%9C%E7%B4%A2 |
|
投稿日時: 2008-06-23 15:42
progmanさん、nagiseさん ありがとうございます。
質問の前に if (str1.equals("abc")) if (str1.toString() == "abc".toString()) も試してみて、さらに疑問が深まっての質問でした。 「internプール」については、これから調べてみます。 |
1