`

equals和==比较

    博客分类:
  • java
阅读更多

      在值和对象的比较上,经常会遇到到底是使用equals还是==的困惑,下面说下自己在工作上的总结和体会,供交流学习,不足之处还请指出,先看一个例子

int a = 3;

int b = 3;

 

String stra = new String("iteye");

String strb = "iteye";

 

System.out.println(a == b);

System.out.println(stra == strb);

System.out.println(stra.equals(strb));

 

返回的结果为:true false true,

可能有的小伙伴会有疑问,stra和strb不是一样吗,为啥stra==strb会返回false呢?下面就进行说明

1.==

      a==b返回为true,很好理解,a和b的值都为3,肯定是相等的,但是为什么stra==strb就返回false了呢?要理解这一点,首先要理解基本数据类型和非基本数据类型的区别。

     在Java中游8种基本数据类型:

  浮点型:float(4 byte), double(8 byte)

  整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)

  字符型: char(2 byte)

  布尔型: boolean(JVM规范没有明确规定其所占的空间大小,仅规定其只能够取字面值"true"和"false")

      对于这8中基本数据类型的变量,变量存储的都是值本身,所以只要值相等,使用==进行比较始终返回true。而对于非基本数据类型的变量,又称为引用类型变量,引用类型变量存储的并不是值本身,而是存储的与其关联的对象在内存中的地址,有点类似于C/C++里面指针的概念。

      对于String stra;声明了一个引用类型的变量,此时并未与任何对象关联,而通过new String("iteye");产生了一个对象,此时stra即关联到了该对象上,此时stra中存储的就是它所指向的对象在内存中存储的地址信息,并不是值本身,也就是说不是存储的字符串"iteye"本身,因此使用==进行比较时,返回的结果为false。

2.equals

      equals方法是基类Object中的方法,因此对于继承Object的类都存在该方法,如果在类中没有对equals方法进行重写,则默认使用的都是Object类的equals方法。equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。对于像String、Double、Integer、Date等都对equals方法进行了重写,所以调用这些类的equals方法,实际比较的是引用所存储的变量值。

总结:

      1)如果==比较的变量是基本数据类型,则比较的是变量值本身是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。

  2)equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所关联对象在内存中的地址;如果对equals方法进行了重写的话,比较的是所指向的对象的内容。

0
1
分享到:
评论

相关推荐

    java中equals和==的区别

    Java 中 equals 和 == 的区别 ...equals 和 == 是两个不同的概念,equals 比较的是对象的内容,而 == 比较的是对象的地址。在编程中,正确地使用 equals 和 == 是非常重要的,以避免程序中的错误和bug。

    java中equals和==的区别.doc

    Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。 首先,我们需要了解 Java 中的内存模型。在 Java 中,变量可以分为两种:基本类型(primitive type)和...

    java中equals和==的区别.docx

    Java 中的 equals 和 == 是两个常用的操作符,经常用于比较对象或变量的值。然而,许多开发者不知道它们之间的区别,或者误用它们,导致程序出错。下面我们将详细解释 equals 和 == 的区别,并通过实例代码来加深...

    Java基础复习(内附String中equals与==区别的分析)

    本篇复习将重点讨论String类中的`equals()`方法和`==`运算符的区别,这对于理解对象比较和字符串操作至关重要。 首先,`==`运算符在Java中用于比较基本类型(如int、char)的值,而在比较对象时,它实际上是检查两...

    equals与==之间的区别

    - **适用性**:`==`适用于基本类型和引用类型的地址比较,而`equals`主要适用于对象的内容比较。 - **行为**:`==`比较的是内存地址,而`equals`在某些类中比较的是对象的状态(内容)。 - **性能**:通常来说,`==`...

    Java 中equals和==的区别.doc

    Java 中equals和==的区别

    java 资料 equals 与== 的区别

    在上面的例子中,str1 和 str2 是两个字符串对象,equals 方法比较的是它们的值,因为它们的值相等,所以输出“对象 str1 和对象 str2 的值相等”。 == 运算符比较的是变量的值或内存地址,而 equals 方法比较的是...

    【Java面试题】equals与==的区别

    【Java面试题】equals与==的区别

    java中equals和==的区别-5页.pdf

    java中equals和==的区别-5页.pdf

    java中equals和==的比较.pdf

    在Java编程语言中,`equals()` 和 `==` 都用于比较对象,但它们的用法和含义有所不同。本文将详细解析这两个操作符在Java中的区别,并通过具体的例子进行阐述。 1. `==` 操作符: `==` 在Java中主要用来比较基本...

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

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...

    java中equals和==的区别.

    在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象的两种不同方式,它们在处理不同类型的数据时有不同的行为。了解这两者的区别对于编写正确的代码至关重要。 `==`运算符: 1. `==`用于比较基本类型的...

    java中equals和==的区别.pdf

    在Java中,比较两个对象是否相等时,经常使用到的运算符有"=="和"equals"。虽然两者都可以用于比较,但它们有着本质的区别,特别是在比较对象和基本数据类型值时。 首先,我们来了解"=="运算符。在Java中,"==...

    浅谈Java中的equals和==Java开发Java经验

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别和用法对于任何Java开发者来说都至关重要,特别是对于那些正在积累Java开发经验的人来说。 首先,让我们...

    java中equals和==的比较文.pdf

    在Java中,`equals()`方法和`==`运算符都是用来比较对象的,但它们的比较方式不同。`==`运算符用于比较基本类型(如int,char)的值是否相等,对于引用类型,`==`比较的是两个引用是否指向内存中的同一个对象。而`...

Global site tag (gtag.js) - Google Analytics