java中String类与变量相加

publicclassstr{publicstaticvoidmain(Stringargs[]){intvalue=1;Stringstr1="ABC"+value;S... public class str {
public static void main(String args[]){
int value=1;
String str1="ABC"+value;
String str2="ABC"+1;
String str3=str1;
String str4="ABC1";
String str5="ABC"+value;
boolean a=(str1==str2);
boolean b=(str1==str3);
boolean c=(str1==str4);
boolean d=(str1==str5);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
结果为什么是
false
true
false
false
str1与str2与str5为什么不等 3和1 却相等
用==不是比较地址吗 那么str1+value的地址就变了吗
展开
 我来答
abcd_sanbian
2012-04-14 · TA获得超过449个赞
知道答主
回答量:76
采纳率:0%
帮助的人:62.5万
展开全部
==的确是比较地址的。“那么str1+value的地址就变了吗”:是的,String字符串每进行操作(比如像你进行的拼接)都会new一个新对象,新对象肯定会有一个新地址,所以当str1=str1+value时,str1已经指向了别的地址(多说一句原来的“ABC”由于没有了变量指向,这个时候已经是垃圾,等待自动回收)。至于“3和1 却相等”因为String str3=str1,实际上是将str1的地址付给了str3,所以它们指向同一个地址…………当要进行很多次字符串拼接时不要用String,应该使用Stringbuffer,你可以查查为什么
韶珑计邈
2020-03-15 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:32%
帮助的人:661万
展开全部
java中string类型的变量的值是无法改变的,如果想要在字符串后面加其他字符串,需要定义stringbuffer或者stringbuilder变量,stringbuffer和stringbuilder变量与string的功能基本一致,只不过值可以改变,它们是java后面版本升级加入用来完善string的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zbz232
2012-04-12
知道答主
回答量:65
采纳率:0%
帮助的人:31.1万
展开全部
两个String对象间用==进行运算,比较的是这两个对象的引用地址是否一样;而不是他们的值是否相等;要想比较两者的值请用equals方法
首先STR1和STR2,str4,str5所指向的引用地址不一样;因此a ,c,d为FALSE;
STR3=STR1;这句代码把STR1的引用付给了STR3,使他们指向同一个引用;
因此b为true
str1+value并没有改变地址,只是改变了值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luowgw1
2012-04-13 · 超过16用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:40.8万
展开全部
我给个地址例子你理解吧。str1在地址001存入“ABC1” str2在地址002上存上“ABC1”,str3=str1的地址也就是001,这里是地址赋值,str4在地址004存入“ABC1” str5也一样。String每次新建都是新建对象,他们的地址是不一样的。 你追加的问题的答案是,地址没变,是内容变了,会自动把int类型转换成string型加了。这是隐式转换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
的失当神处幸15
2012-04-11
知道答主
回答量:16
采纳率:0%
帮助的人:8101
展开全部
总而言之一句话String类在JAVA语言中用==比较的是地址,如果比较是否相同就要调用用equals()方法。可能你学过C 它误导了你。C中字符串是以数组来表示的,它没有类的概念所以比较修改都是直接在原有的基础上修改,而在JAVA中不行额。多看看String类和其中的方法以及一些内存分析你就能懂了 我也是学习JAVA的新手额 以后一起学习多交流额
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式