java中的String 类型
关于String类型,有几个问题请问大家:
1.String s1 = "aaaa";
String s2 = "aaaa";
System.out.println("s1 == s2 is " + (s1==s2));
显示结果为true;
String s11 = new String("aaaa");
String s22 = new String("aaaa");
System.out.println("s11 == s22 is " + (s11==s22));
显示结果为false;
问题:
String s1 = "a";与String s1 = new String("a");有什么区别?
2。Java里面,对于基本数据类型变量,都是传递值的,而对于对象和数租都是传递引用的。那么String类型应该属于对象吧,可是他确实传递值的,这是为什么?
public class Test1
{
public static void main( String args[])
{
Test1 t = new Test1();
String s1 = new String("aaa");
System.out.println("1: "+s1);
t.setValue(s1);
System.out.println("3: "+s1);
}
void setValue(String s)
{
s = "bbb";
System.out.println("2: "+s);
}
}
结果:1: aaa
2: bbb
3: aaa
但是StringBuffer就是传递引用的
public class Test1
{
public static void main( String args[])
{
Test1 t = new Test1();
StringBuffer s1 = new StringBuffer("aaa");
System.out.println("1:"+s1);
t.setValue(s1);
System.out.println("3: "+s1);
}
void setValue(StringBuffer s)
{
s.replace(0,s.length(),"bbb" );
System.out.println("2: "+s);
}
}
结果:1: aaa
2: bbb
3: bbb
问题:这个如何解释呢?谢谢