こんにちは、shinoです。毎日ボチボチプログラミングをしながら生活しています。その中での技術・エラーなどの紹介をしています。
今回は、Javaのエラーを紹介していきます。Javaを初めて使う方向けに書いてみます。私もこの記事を書いている時から始めています。ここから少しずつ学んで行こうかと思っているところでございます。
内容
– ”==”と”equals”の違いとは
どんなタイミングか
こんなコードを書いていました。以下のコードで考えていきます。
何が原因かわかりますか?
以下のコードでは、”diff”が表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
public static void main(String[] args) { String a,b; a = "test-hoge"; b = new String("test-hoge"); if(a == b) { System.out.println("same"); } else { System.out.println("diff"); } } |
解説
原因は分かりましたか?
対応は簡単です。
結論から言うと、”==”が確認しているのは同じ参照先であるかどうかです。
なので、以下のようにすると”same”が帰ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class chp03 { public static void main(String[] args) { String a,b; a = "test-hoge"; b = a; if(a == b) { System.out.println("same"); } else { System.out.println("diff"); } } } |
ちなみに
“==“とよく比較されるものに”equals”があります。こちらは、内容が同じものを確認するものになります。
普段使っているイコールであれば、こちらの方が一致しています。使ってみるとこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class chp03 { public static void main(String[] args) { String a,b; a = "test-hoge"; b = new String("test-hoge"); if(a == b) { System.out.println("same"); } else { System.out.println("diff"); } if(a.equals(b)) { System.out.println("same"); } else { System.out.println("diff"); } } } |
“==“では”diff"が帰ってきますが、”equals”では”same"が帰ってきます。
これがわかりやすい比較ですかね。他に機になるものがあれば色々やってみてください。
最後に
お疲れ様です。エラーは解決できたでしょうか?
他にもエラー情報等も掲載してあるので読んでみて下さい。
解決できなければ、Java公式を確認してみるのもいいと思います。
ひと休憩の際におすすめ記事は「Exception in thread “main”のエラー解決法」です。時間があれば読んでみて下さい。
コメント