本帖最后由 杨志 于 2012-5-2 19:20 编辑
首先!你应该知道JAVA中的数据类型是可以去分为:
基本数据数据类型和对象数据类型的。
关于这两种的数据类型他们在内存中的存放方式是不一样的。
对于这些基本数据类型如(int,double,float,byte,long,shot,char),他们是直接去存在栈区中的。
这样的话,那么不管你是用的什么比较,都会是去比较他们的值。
但是对于对象数据类型,那么在栈区中保留的只是对象的引用,或者说是地址。
那么,用== 则会是去比较他们的地址值。用equals则比较他们自身的值。
比如说:- String a = new String("abc");
- String b = new String("abc");
- System.out.println(a == b);
- System.out.println(a.equals(b));
复制代码 这里第一个就是比较的地址,那么虽然值一样,但是在栈中保存的地址是不一们的。所以为false.
第二个比较的是值,那个肯定是就是true;
不知道能不能帮上你!谢谢!
|