`
lxy2330
  • 浏览: 465668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Integer“==”和Integer“equals”

    博客分类:
  • java
 
阅读更多

以前有碰到Integer“==”和Integer“equals”的问题,但是都没有总结,有时开发时也忘记注意了

 

最近有碰到这个问题了,发现是一个容易忽略的注意点,所以稍微整理了一下

 

看下面这段代码:

 

Java代码  收藏代码
  1. /** 
  2.  * @author wuliwei 
  3.  * 
  4.  */  
  5. public class IntegerEqualsTest {  
  6.     /** 
  7.      * @param args 
  8.      */  
  9.     public static void main(String[] args) {  
  10.         Integer i1 = 2;  
  11.         Integer i2 = Integer.valueOf(2);  
  12.         Integer i3 = Integer.valueOf(2);  
  13.         Integer i4 = Integer.valueOf("2");  
  14.         Integer i5 = Integer.valueOf("2");  
  15.           
  16.         System.out.println("test ==");  
  17.           
  18.         System.out.println("i1 == i2 ? " + (i1 == i2));  
  19.         System.out.println("i1 == i4 ? " + (i1 == i4));  
  20.         System.out.println("i2 == i3 ? " + (i2 == i3));  
  21.         System.out.println("i2 == i4 ? " + (i2 == i4));  
  22.         System.out.println("i4 == i5 ? " + (i4 == i5));  
  23.           
  24.         System.out.println("test equals");  
  25.   
  26.         System.out.println("i1.equals(i2) ? " + i1.equals(i2));  
  27.         System.out.println("i1.equals(i4) ? " + i1.equals(i4));  
  28.         System.out.println("i2.equals(i3) ? " + i2.equals(i3));  
  29.         System.out.println("i2.equals(i4) ? " + i2.equals(i4));  
  30.         System.out.println("i4.equals(i5) ? " + i4.equals(i5));  
  31.     }  
  32.   
  33. }  

 

先来分析下这段代码的对象创建过程:

 

Integer i1 = 2;        这条语句创建了一个整型对象
Integer i2 = Integer.valueOf(2);        这条语句不创建新的对象,i2和i1引用同一个对象
Integer i3 = Integer.valueOf(2);        这条语句不创建新的对象,i3和i1引用同一个对象
Integer i4 = Integer.valueOf("2");        这条语句创建了一个整型对象
Integer i5 = Integer.valueOf("2");        这条语句创建了一个整型对象

 

根据对象的创建过程,很明了,程序运行结果为:

 

Java代码  收藏代码
  1. test ==  
  2. i1 == i2 ? true  
  3. i1 == i4 ? false  
  4. i2 == i3 ? true  
  5. i2 == i4 ? false  
  6. i4 == i5 ? false  
  7. test equals  
  8. i1.equals(i2) ? true  
  9. i1.equals(i4) ? true  
  10. i2.equals(i3) ? true  
  11. i2.equals(i4) ? true  
  12. i4.equals(i5) ? true  

 

感觉很简单,但实际的开发过程中,如果不注意,判断两个Integer相等就直接用“==”,但是在如今这个开源框架的天下,对象的创建很多时候并不是我们想的那样,所以类似Integer这种基础数据类型的相等,也应该跟String判断相等一样,用equals。

但是要注意下,如果是STRING类型的与整形用EQUALS判断结果是FALSE,主意类型。

分享到:
评论

相关推荐

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    本文将深入探讨 Java 中的 Integer 比较,了解为什么使用 "==" 运算符可能会出错,并解释如何正确地使用 equals() 方法来比较 Integer 对象。 Java 中的 Integer 对象 在 Java 中,Integer 是一个不可变的类,它...

    Java中的==和equals区别

    然而,在许多情况下,特别是对于自定义类或Java标准类库中的类(如`String`、`Integer`等),`equals`方法被重写来比较对象的实际内容。 ##### 示例: ```java String str1 = "hello"; String str2 = "hello"; ...

    equals与==之间的区别

    然而,许多Java类(如`String`、`Integer`等)重写了`equals`方法,使其能够基于对象的内容来进行比较。 示例: ```java String a = new String("hello"); String b = new String("hello"); boolean isEqual = a....

    ==和equals方法究竟有什么区别

    但是,许多类(尤其是String、Integer等)都重写了`equals()`方法,以便比较对象的内容而不是引用。例如,在String类中,`equals()`方法会比较两个字符串的字符序列是否相同,而不关心它们是否是同一个对象实例。...

    java中equals和==的区别.pdf

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员方法...

    知识点 比较运算符==和equals方法的比较

    但是,许多类(如String、Integer等)重写了`equals()`方法,使其能够比较对象的值。例如,在String类中,`equals()`方法会比较两个字符串的字符序列是否相同,而不是比较它们在内存中的位置。 回到给出的示例,...

    浅谈java 中equals和==的区别

    但许多类(如 `String`、`Integer` 等)都重写了 `equals()` 方法,以便比较对象的内容而不是引用。 在 `String` 类中,`equals()` 方法用于比较两个字符串的内容是否相同。因此,即使 `str1` 和 `str3` 是不同的...

    java中的==和equals()方法1

    但是,很多类(如String、Integer等)都重写了`equals()`方法,使其比较对象的值或内容。例如,String类的`equals()`方法会比较两个字符串的字符序列是否相同: ```java String s1 = new String("Hello"); String ...

    java中equals和==的区别[文].pdf

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间存在着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员...

    Java中equals,hashcode和==的区别

    "Java中equals、hashcode和==的区别" Java 中 equals、hashcode 和==的区别是 Java 编程语言中一个经常遇到的问题。这三个概念都是用来比较对象的,但是它们之间存在着本质的区别。 首先,==号是Java中的一个...

    java中equals()函数的用法 equals和==的区别

    但是,很多类(如String、Integer等)都重写了`equals()`方法,以便进行更深层次的内容比较。例如,String类的`equals()`会比较字符串的内容是否相同: ```java String str1 = new String("Hello"); String str2 = ...

    java中如何区分==和equals

    Java中如何区分==和equals Java语言中,`==`和`equals`是两个常用的比较运算符,但是它们的含义和使用场景却有很大的区别。本文将详细介绍Java中如何区分`==`和`equals`,并提供代码示例帮助大家更好地理解和学习。...

    java中equals和==的比较.pdf

    然而,很多类(如String、Integer等)都重写了`equals()`方法,使其比较对象的内容而不是引用。这意味着当调用`equals()`时,实际比较的是两个对象的内容是否相等,而非它们在内存中的位置。 3. 在String类中的特殊...

    java equals和==的区别详解

    在Java编程语言中,`equals()` 和 `==` 运算符在比较对象时有着显著的不同。理解这两者的区别对于编写高效、可靠的代码至关重要。以下是它们的详细解释: 1. **`==` 运算符**: `==` 在Java中主要用于比较基本类型...

    java代码-== equals测试

    在Java编程语言中,`==` 和 `equals()` 是两种常用的比较操作符,但它们的用法和含义有所不同。本文将深入探讨这两个概念,并通过实际的代码示例进行测试和解释。 首先,`==` 操作符用于基本类型(如 int、char、...

    JAVA-int和Integer的区别1.zip

    在Java编程语言中,`int`和`Integer`都是用于表示整数值的数据类型,但它们之间存在着显著的差异。理解这些区别对于编写高效且优化的Java代码至关重要。 首先,`int`是Java中的原始数据类型之一,它直接存储在栈...

Global site tag (gtag.js) - Google Analytics