看答案来了。。有两种答案,一种说是==比较值,一种是说数值强行转换问题。在验证的过程中,再百度了一下。我的结论是: equals() 比较的是两个对象的值(内容)是否相同。
"==" 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型的变量值是否相等,但是在比较两个基本数据类型的时候,也要考虑到小数问题是否失精度,三楼说得很好。贴上代码。
- public class java{
- //利用装箱拆箱原理验证一下
- public static void main(String[]args){
- //在-128~127 之外的数,不自动拆箱装箱,所以这时候比较的是内存地址
- Integer i1 = 200;
- Integer i2 = 200;
- System.out.println("i1==i2: "+(i1==i2)); //结果为false
- // 在-128~127 之内的数,自动拆箱装箱,比较的是基本数据类型的值
- Integer i3 = 100;
- Integer i4 = 100;
- System.out.println("i3==i4: "+(i3==i4)); //结果为true
-
- }
- }
复制代码 |