日期:2014-05-20  浏览次数:20633 次

判断相等的问题

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这种,数据直接保存在栈里面,一比较,就知道了

==是比较栈里面的东西的

新手,不对请指教