下面代码将输出什么内容:()
public class SystemUtil{
public static boolean isAdmin(String userId){
return userId.toLowerCase()=="admin";
}
public static void main(String[] args){
System.out.println(isAdmin("Admin"));
}
}
return new String(result, 0, len + resultOffset);
public class ImmutableString
{
public static void main(String[] args)
{
String s1 = "Test";
String s2 = "Test";
String s3 = new String("Test");
String s4 = new String("Test");
System.out.println(s1==s2);//true
System.out.println(s3==s4);//false
}
} 问题就是,在方法区的常量池的"admin"和在堆中的"admin"比较的时候是怎么样的呢,又不是基本数据类型,比较的是地址,那当然是false啦! public class TestPlus
{
public static void main(String[] args)
{
String s1 = new String("HeIIo");//共2个 堆区和常量池都有"HeIIo"
String s2 = "World";//共3个 常量池中的"World"
System.out.println("s1 = " + s1);//共5个 "s1 = "&"s1 = HeIIo"都在常量池
System.out.println("s2 = " + s2);//共7个 "s2 = "&"s2 = World"常量池
//在堆里创建“HeIIoWorld”对象,创建2个共9个
s1 += s2;//9 HeIIoWorld "HeIIoWorld"堆和常量池都有,因为创建了新对象
System.out.println("s1 = " + s1);//共10个 "s1 = HeIIoWorld"常量池
System.out.println("s1==HeIIoWorld " + (s1=="HeIIoWorld") );//共13个 "s1==HeIIoWorld "在常量池,"s1==HeIIoWorld false"在常量池
s1 = s1.concat(" 张三!");//HeIIoWorld张三! 共16个 "HeIIoWorld 张三"堆和常量池,"张三"常量池
System.out.println("s1.concat = " + s1);//共18个 "s1.concat = "&"s1.concat = HeIIoWorld 张三"常量池
s1 = s1.replaceAll("II", "aa");//HeaaoWorld张三!共22个
System.out.println("s1.concat = " + s1);//共23个
System.out.println(s1 + " ls index: " + s1.charAt(2));//a 共28个
System.out.println("--------------------- ");
StringBuffer sb1 = new StringBuffer("Hello");
StringBuffer sb11 = new StringBuffer("Hello");
StringBuffer sb2 = new StringBuffer("World");
StringBuffer sb3= new StringBuffer("Hello");
StringBuffer sb4=sb1.append("abc");
System.out.println( "sb4==sb1 "+(sb4==sb1));//true
sb1.toString();//创建String对象返回String对象的地址
//System.out.println( sb1.toString());
//System.out.println( sb1==sb1.toString());
//System.out.println( "Helloabc==sb1.toString()="+("Helloabc"==sb1.toString()));
//sb3=sb1+sb2;
System.out.println("sb11==sb3 "+(sb11==sb3));
System.out.println("sb11.equals(sb3) "+sb11.equals(sb3));
System.out.println("sb1 = " + sb1);
}
} 理解了以上的程序,那么对于String对象的创建,你将非常透彻。