String a = "abc";
String b = a;
String c=b.replace('a', 'A');
String b = a;
String c=b.replace('a', 'A');
解决方案 »
- java.lang.reflect.InvocationTargetException,在线等待!!!
- 如何在javascript中动态获取jsp中arraylist中每一个元素中的值呢?
- 拜师.顺便麻烦帮我分析下这几个语句具体含义.(详细点)
- 求救!!!那位大虾能帮忙看看为什么JTable为什么不显示数据库的查询结果
- 看了张孝祥的教程后,感觉更迷茫
- java程序如何捕获系统关机的消息?
- 第一次用Jbuilder,有几个问题请教
- JAVA与.NET技术会“殊途同归”吗?
- 谁帮我讲一下,谢谢:)
- 做程序员真的这么累吗,郁闷死了,散分
- 关于一条圆内切正方形与外切正方形的程序,麻烦帮我改改。。谢谢
- 关于初始化块,静态块,构造函数的先后调用
abc
A
个人觉得两个对象
abc--》a b共享这个String对象
Abc--》c指向的对象
abc
Abc对象b是对a的一个引用,或者叫别名。
String b = a; b是对a的引用,或称别名;
String c=b.replace('a', 'A');两个对象,一个是“Abc”,一个是指向“Abc”的引用对象c。结论:4个
1. 如果引用算对象:
那么生成了3个引用对象a,b,c
1个在堆中的对象开始内容是abc后来是Abc其实指向的是一块内存空间
所以共4个
2. 若如果引用不算对象:
那么只有在堆中的一个对象,个人感觉abc和后来的Abc是一个
两个对象:
abc--》a b共享这个String对象
Abc--》c指向的对象
同意
String b = a;
String c=b.replace('a', 'A');两个对象,只分配两个String的内存,“abc”“Abc”其他的只是引用而已
a,b,c都只是引用,并非对象。
你可以这样定义一个引用:
String s;
但此时如果对s发送一个消息,则会得到运行时错误,因为s还没有和任何对象关联起来。
可以在定义时就初始化它:
String s = "abc";
让s初始化时就指向了"abc"这个对象(其实,"abc"只是字符串,是编译器将其转化成了字符串对象的)。所以应该是两个对象。
String a = "abc";
String b = a;
String c = a.replace('a','A'); if(a == b){
System.out.println("a和b是同一个对象的引用“);
}
if(a != b){
System.out.println("a和b是两个不同的对象“);
}
if(a == c){
System.out.println("a和c是同一个对象的引用“);
}
if(a != c){
System.out.println("a和c是两个不同的对象“);
}
if(b == c){
System.out.println("b和c是同一个对象的引用“);
}
if(b != c){
System.out.println("b和c是两个不同的对象“);
}
}
}运行结果:
a和b是同一个对象的引用
a和c是两个不同的对象
b和c是两个不同的对象答案 很明显 只有两个 对象
abc--》a b共享这个String对象 第一个
Abc--》c指向的对象 c第二个 Abc第三个(2)当然两个也是可以的
说c是引用变量也可以其实这些都不重要