关于 java中string类不能用== 比较问题!大神进!
publicclassDemo{publicstaticvoidmain(String[]args){booleanflag;Strings="hello";String...
public class Demo {
public static void main(String[] args) {
boolean flag ;
String s = "hello";
String s1 = "hello";
flag = s == s1;
System.out.println(flag);
}
}这段代码中,按道理来说 :String是引用类型,==比较的是地址值是否相同,但是在JDK1.7版本下,
S == S1 返回值居然是ture / 当我把S1改成helloooo以后 返回值就变成了false; 这怎么解释,难道直接对比里面的字符串是否相同了? 是不是当2个字符串相同时候 S ,S2指向的是同一个地址值? 展开
public static void main(String[] args) {
boolean flag ;
String s = "hello";
String s1 = "hello";
flag = s == s1;
System.out.println(flag);
}
}这段代码中,按道理来说 :String是引用类型,==比较的是地址值是否相同,但是在JDK1.7版本下,
S == S1 返回值居然是ture / 当我把S1改成helloooo以后 返回值就变成了false; 这怎么解释,难道直接对比里面的字符串是否相同了? 是不是当2个字符串相同时候 S ,S2指向的是同一个地址值? 展开
3个回答
展开全部
楼主并没有理解string pool这个概念
如果String s = new String("hello");
String s1 = new String("hello");
这俩==判断肯定是false
楼主搜索java有意思的知识点 第一个博客里 类似
public static void test() {
String x = "hello";
String y = "world";
String z = new String("helloworld");
String a = "helloworld";
System.out.println("x == hello:" + (x == "hello"));
System.out.println("a == helloworld:" + (a == "hello" + "world"));
System.out.println("a == x+y:" + (a == (x + y)));
}
这个题 你的答案是什么?
如果String s = new String("hello");
String s1 = new String("hello");
这俩==判断肯定是false
楼主搜索java有意思的知识点 第一个博客里 类似
public static void test() {
String x = "hello";
String y = "world";
String z = new String("helloworld");
String a = "helloworld";
System.out.println("x == hello:" + (x == "hello"));
System.out.println("a == helloworld:" + (a == "hello" + "world"));
System.out.println("a == x+y:" + (a == (x + y)));
}
这个题 你的答案是什么?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是这样的 , String s2=new String("hello"); 这样在new 一个对象赋值 内存地址就不一样了,就会返回false
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询