java指针有关

java指针相关
public class test 
{
public static void main(String[] args) 
{
String a = new String("test");
String b = new String("test");
String c = a;
System.out.println(a==b);
System.out.println(a==c);
}
}


---------- 运行java ----------
false
true
---------------------------------
请问为什么第一个是false,第二个是true?
------解决思路----------------------
/**
 * 第一步:检查stringpool池中是否有“test”,
 * 不存在:在pool池中,放入“test”,在开辟一个新的空间,a指向新的内存地址
 * 存在:则直接开辟一个新的空间,a指向新的内存地址
 */
String a = new String("test");  
/**
 * 同a
 * 所以开辟了一个新的内存地址,b且指向新的内存地址
 */
        String b = new String("test");
        /**
 * c与a指向同一个内存地址
 */
        String c = a;
        /**
         * a b 指向不同的内存地址 
         *结果: false
         */
        System.out.println(a==b);
        /**
         * a c 指向相同的内存地址 
         * 结果: true
         */
        System.out.println(a==c);