1.String s="Hello Java"是一种非常特殊的形式,和new 有本质的区别,它是java中唯一不需要new 就可以产生对象的途径。以 String s="Hello Java";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"Hello Java"的对象,如果有,就会把它赋给当前引用,即原来那个引用和现在这个引用指点向了同一对象。如果没有,则在常量池中新创建一个"Hello Java",下一次如果有String   s1 = "Hello Java";又会将s1指向"Hello Java"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。也可以这么理解: String str = "Hello Java"; 先在内存中找是不是有"hello" 这个对象,如果有,就让str指向那个"Hello Java"。如果内存里没有"Hello Java",就创建一个新的对象保存"Hello Java"。String str=new String ("Hello Java") 就是不管内存里是不是已经有"Hello Java"这个对象,都新建一个对象保存"Hello Java"。
2.用equalsIgnoreCase这个方法。