1、对于Java的八大基本数据类型(float double byte short int long char boolean)要判断相等只能用== ,不能用equals
2、对于这些数据的封装类进行比较的时候,既可以用==,也可以用equals,但是含义不一样
== 是判断是否同一个对象(也就是对象的内存地址),equals是判断值是否相等,不管是否同一个对象
[Quote=引用 6 楼 abstruct 的回复:]
+1
但是如果是Integer i = new Integer(42); Long l = new Long(42);
那么i.equals(l);这个又是否为true呢? 这个却是false
[/Quote]
==是比较两个变量的内存地址的内容是否相同
比如 a == b,就是比较 变量a的内存和变量b的内存是否相同
equals是比较两个变量所引用的对象的值是否相同
比如 a.equals(b),就是比较 变量a的内存中所保存的对象地址的内容和变量b的内存中所保存对象地址的内容是否相同
Integer i = new Integer(42); Long l = new Long(42);
那么i的内存地址保存的Integer(42)对象的地址,该地址保存的内容Integer对象的信息
而l的内存保存的是Long(42)对象的地址,该地址保存的内容是Long对象的信息
因为是Integer和Long是不同的两个对象,内存信息是不一样的(内存初始化处理也不一样),所以equals就是false
[Quote=引用 2 楼 dreamslink2010 的回复:]
1、对于Java的八大基本数据类型(float double byte short int long char boolean)要判断相等只能用== ,不能用equals
2、对于这些数据的封装类进行比较的时候,既可以用==,也可以用equals,但是含义不一样
== 是判断是否同一个对象(也就是对象的内存地址),equals是判断值是否相等,不管是否同一个对象
不知道通过上述两点能明白否?……
[/Quote]
+1
但是如果是Integer i = new Integer(42); Long l = new Long(42);
那么i.equals(l);这个又是否为true呢? 这个却是false
1、对于Java的八大基本数据类型(float double byte short int long char boolean)要判断相等只能用== ,不能用equals
2、对于这些数据的封装类进行比较的时候,既可以用==,也可以用equals,但是含义不一样
== 是判断是否同一个对象(也就是对象的内存地址),equals是判断值是否相等,不管是否同一个对象
不知道通过上述两点能明白否……
[/Quote]
1、对于Java的八大基本数据类型(float double byte short int long char boolean)要判断相等只能用== ,不能用equals
2、对于这些数据的封装类进行比较的时候,既可以用==,也可以用equals,但是含义不一样
== 是判断是否同一个对象(也就是对象的内存地址),equals是判断值是否相等,不管是否同一个对象
不知道通过上述两点能明白否?