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的地址就变了吗 展开
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的地址就变了吗 展开
15个回答
展开全部
String比较请用 "lslsl".equals("kskss") ,
两个字符串本来就用的不同的地址存储的
两个字符串本来就用的不同的地址存储的
追问
String c="qwer";
String d="qwer";
System.out.println(c==d); //true
那这样创建的话地址怎么就相同 我是新手能不能讲细一点
追答
java中有字面量的概念,这些字符串被存储起来,当你引用的时候,他们首先在字面量里找,如果有了,他就引用字面量的地址,你上面的 c,d 引用的是同一个字段量,所以为true,但如果你对字符串有其它操作,他会重新new一个字面量出来,这样地址就发生了变化,所以对字符串的操作,最好用 StringBuffer,而不用 String直接+
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
囧,你用错方法了,String类型的比较要用str1.equals(str2) ,是地址比较,但是每new一个新的出来地址是不一样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String不是基础类型,每一个String变量都是一个对象,=比较的是对象的地址,equals比较的是内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符传比较用equals 比较字符串的值,==比较字符串对象的引用(就是地址)是否一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
== 是判断它们在内存中的地址是否相等。
equals 判断它们的值是否相等。
equals 判断它们的值是否相等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询