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的地址就变了吗
展开
 我来答
撒白风05F
2012-04-10 · TA获得超过1010个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:514万
展开全部
String比较请用 "lslsl".equals("kskss") ,
两个字符串本来就用的不同的地址存储的
追问
String c="qwer";
String d="qwer";
System.out.println(c==d); //true
那这样创建的话地址怎么就相同 我是新手能不能讲细一点
追答
java中有字面量的概念,这些字符串被存储起来,当你引用的时候,他们首先在字面量里找,如果有了,他就引用字面量的地址,你上面的 c,d 引用的是同一个字段量,所以为true,但如果你对字符串有其它操作,他会重新new一个字面量出来,这样地址就发生了变化,所以对字符串的操作,最好用 StringBuffer,而不用 String直接+
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zu...5@163.com
2012-04-10 · TA获得超过115个赞
知道答主
回答量:227
采纳率:0%
帮助的人:84.6万
展开全部
囧,你用错方法了,String类型的比较要用str1.equals(str2) ,是地址比较,但是每new一个新的出来地址是不一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhwtg
2012-04-10 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:103万
展开全部
String不是基础类型,每一个String变量都是一个对象,=比较的是对象的地址,equals比较的是内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
asowychun
2012-04-12 · TA获得超过207个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:324万
展开全部
字符传比较用equals 比较字符串的值,==比较字符串对象的引用(就是地址)是否一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caoyunhui73
2012-04-10 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:102万
展开全部
== 是判断它们在内存中的地址是否相等。
equals 判断它们的值是否相等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式