请问这样到底生成了几个String对象? String a = "abc";String b = a;String c=b.replace('a', 'A'); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不算string本身abcA个人觉得两个对象 两个String对象,个人意见,当然a,b,c不是对象.. 两个对象:abc--》a b共享这个String对象Abc--》c指向的对象 两个abcAbc对象b是对a的一个引用,或者叫别名。 String a="abc";两个对象,一个是“abc”,一个是指向“abc”的引用对象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是一个 huyc_fly() ( ) 信誉:100 2006-6-6 10:32:56 得分: 0 两个对象:abc--》a b共享这个String对象Abc--》c指向的对象 同意 String a = "abc";String b = a;String c=b.replace('a', 'A');两个对象,只分配两个String的内存,“abc”“Abc”其他的只是引用而已 我认为是3个。String 了几次就是几个。 java是通过引用来操作对象的。a,b,c都只是引用,并非对象。你可以这样定义一个引用:String s;但此时如果对s发送一个消息,则会得到运行时错误,因为s还没有和任何对象关联起来。可以在定义时就初始化它:String s = "abc";让s初始化时就指向了"abc"这个对象(其实,"abc"只是字符串,是编译器将其转化成了字符串对象的)。所以应该是两个对象。 还是举个例子吧:public class Text{ public static void main(String[] args){ 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是两个不同的对象答案 很明显 只有两个 对象 (1)3个对象abc--》a b共享这个String对象 第一个Abc--》c指向的对象 c第二个 Abc第三个(2)当然两个也是可以的说c是引用变量也可以其实这些都不重要 内存卡恢复工具 如何快速熟悉一个上线了的产品(维护) 请教各位超级无敌靓仔高手们2个正则表达式问题 字段太多了,怎么办(还是100分求助)? 请问,有没有好的工具可以把VJ++开发的项目移植到JAVA2? 如何用java实现打印页面上的表格?? 怎么能输入一个000x格式的字符串 继承问题 请问现在有没有UNIX下通过Java访问MS SQL Server的方法? java Socket 告急!!必给分 关于一条圆内切正方形与外切正方形的程序,麻烦帮我改改。。谢谢 关于初始化块,静态块,构造函数的先后调用
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是引用变量也可以其实这些都不重要