大家知道当对象a指向对象(a=b)b时,如果b的属性发生改变,则a的属性也改变,但String 类型为什么不是这样,请大家看下面的例子:
public class Student {
private String name; public Student(String name) {
this.name = name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}}public class Test {
public static void main(String[] args) {
String s1 = new String();
String s2 = new String();
s1 = s2;
s2 = "aa";
System.out.print(s1);
Student a = new Student("wang");
Student b = new Student("li");
a = b;
System.out.print(s1);
System.out.print(a.getName());
}}
运行Test.java后系统输出 a.getName()为:li
而s1的值却没变为"aa" ?
public class Student {
private String name; public Student(String name) {
this.name = name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}}public class Test {
public static void main(String[] args) {
String s1 = new String();
String s2 = new String();
s1 = s2;
s2 = "aa";
System.out.print(s1);
Student a = new Student("wang");
Student b = new Student("li");
a = b;
System.out.print(s1);
System.out.print(a.getName());
}}
运行Test.java后系统输出 a.getName()为:li
而s1的值却没变为"aa" ?
解决方案 »
- 这个递归哪里出了问题?
- 问两个swing的问题? table拖放和容器
- 急求JDBC2.0 for SQLServer2000
- 为什么按一次回车会向程序中输入两个字符??
- 内部类继承问题
- 在java程序里实现到Oracle数据库里建一个用户,需要使用哪个类?????
- 求将"d:\file.txt"转成"d:/file.txt"最好的方法!
- 我不认为JAVA有什么好的优点
- 我是在NETBEANS中编写的,为什么总提示有错?请高手指点。
- 在windows2000下应如何设置环境变量path?(Null)
- 如何对ArrayList中的对象排序?
- 菜鸟提问:请问J2EE和J2ME有联系吗?不学J2EE是不是可以直接学习J2ME
Integer i2 = new Integer(2);
i1 = i2;
i2 = new Integer(3);
System.out.println("i1=" + i1);
System.out.println("i2=" + i2);结果是i1=2
i2=3
s1 = s2 使s1,s2指向了同一对象,
而s2 = "aa";操作使s2指向了新的String对象,而s1没有被改变,故s1不会变成"aa"
s1-----> "" , s2----->"aa"
不知道这样表示能否明白?
s1和s2都是引用,s2改变了所引用的地方,s1保持对s2原有的引用.