大家知道当对象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" ?
解决方案 »
- SCJP的考题,关于移位的
- ❤❤❤❤❤❤❤❤❤JAVA小题目❤❤❤❤❤
- 新手请教,发布网站的详细过程,主机用adsl上网
- 怎样选择多个音乐文件?现在只能播.au格式的,其他的呢?
- java里怎样使得中文字符串按拼音排序?
- 菜鸟提问!有谁用过URLClassLoader?
- JAVA Applet程序编译通过,执行报错:Exception:java.lang.NullPointerException
- 关于JAVA的学习
- 如何通过Image对象取得图象的宽高啊?
- java如何在linux下应用 ?
- 如何对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原有的引用.