Javaにおける文字列の比較

String str = "hoge";
if (str == "hoge") {
  System.out.println("equal");
} else {
  System.out.println("not equal");
}

 上の例を実行した場合,not equalが出力されることがある.これはStringの比較は,中身ではなく参照先を見ているからだとか.とかく,そういうわけなのでJavaにおいて文字列の比較をしたければ必ず以下のようにequalsメソッドを使用すること.equalsメソッドは中身を比較してくれる.

String str = "hoge";
if (str.equals("hoge")) {
  System.out.println("equal");
}

補足:vmにおいては”==”で比較しても大丈夫らしい?