Java String赋值问题
public static void main(String[] args) {
String s1="aaa";
String s2="";
s2=s1;//s1的地址赋值给s2
System.out.println(s1==s2);//true s1和s2指向同一个地址,所以存储内容相同
System.out.println(s1);//aaa
System.out.println(s2);//aaa
}
public static void main(String[] args) {
String s1="aaa";
String s2="";
s2=s1;//s1的地址赋值给s2
s1="bbb";//改变s1内容,由于String对象是不可变的,当改变s1的值以后,会重新创建一个对象
System.out.println(s1==s2);//false 此时s1 s2不再指向同一个地址
System.out.println(s1);//bbb
System.out.println(s2);//aaa
}
改变值就会重新创建对象这个特点是String特有的,其他普通类不具有这个特点
package anomyous;
class Person{
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name+" "+age;
}
}
public class Test {
public static void main(String[] args) {
Person p1=new Person("Jake",19);
Person p2=p1;//p1的地址赋值给p2
System.out.println(p1);//Jake 19
System.out.println(p2);//Jake 19
p1.name="Steve";
//因为p1 p2指向同一个地址,更改p1属性值,两者属性值都会改变
System.out.println(p1);//Steve 19
System.out.println(p2);//Steve 19
p2.name="Lee";//更改p2属性值也会达到同样效果
System.out.println(p1);//Lee 19
System.out.println(p2);//Lee 19
}
}