判断相等的问题
public class test {
public static void main(String[] args) {
String a=new String("123");
String b=new String("123");
String c="123";
String d="123";
System.out.println(a==b); //false
System.out.println(a.equals(b)); //true
System.out.println(c==d); //true
System.out.println(c.equals(d)); //true
}
}
这两种定义变量有什么区别呢?为什么第一个是false,后面的两个是true。
------解决方案--------------------String作为引用数据类型,会在栈生成一个对应的堆地址,实际数据保存在堆里面
地址肯定不能一样啊,所以是false
想int这种,数据直接保存在栈里面,一比较,就知道了
==是比较栈里面的东西的
新手,不对请指教