って言うか言語仕様読め。サンプルプログラムまで書いてあるから。
http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm#101083

package testPackage;
class Test {
   public static void main(String[] args) {
      String hello = "Hello", lo = "lo";
      System.out.print((hello == "Hello") + " ");              // 同一クラスのリテラルどうしの参照検査
      System.out.print((Other.hello == hello) + " ");          // 他クラスとのリテラルどうしの参照検査
      System.out.print((other.Other.hello == hello) + " ");   // 他パッケージとのリテラルどうしの参照検査
      System.out.print((hello == ("Hel"+"lo")) + " ");        // リテラルどうしを加算したものとの参照検査
      System.out.print((hello == ("Hel"+lo)) + " ");           // リテラル+変数を加算したものとの参照検査
      System.out.println(hello == ("Hel"+lo).intern());         // 上記の結果を intern したもの
   }
}
class Other { static String hello = "Hello"; }

package other;
public class Other { static String hello = "Hello"; }