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

Java中 ==与equals的区别

 
阅读更多

 在String中

== 比较两个字符串的内存地址是否相等;

equals比较两个字符串的内容是否相等。

注:这里要考虑到字符串的缓冲池机制,不懂得可以搜一下,网上有很多介绍

//String中的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

 object 中equals的效果等同于 ==

//Object中的equals方法  其实就是等同于==
public boolean equals(Object obj) {
        return (this == obj);
    }

 integer中的

== 比较两者的内存地址

equals表示内容相等

注:在jdk1.5以上的版本中,基本类型和封装类型自动转化

例:

        int a= 1;

        Integer b =new Integer(1);

        

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

        System.out.println(b.equals(a));//true

对于这种结果小编也不是很懂,两者竟然引用相同的内存地址!!!

 

//integer中的equels方法
public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

 

1
0
分享到:
评论
5 楼 狼子六 2014-07-07  
正解,受教了
4 楼 imGaofy 2014-06-28  
WAMING5 写道
引用
注:在jdk1.5以上的版本中,基本类型和封装类型自动转化
例:
        int a= 1;
        Integer b =new Integer(1);
       
        System.out.println(a==b); //true
        System.out.println(b.equals(a));//true
对于这种结果小编也不是很懂,两者竟然引用相同的内存地址!!

封装数据类型在JDK中都做过优化,Integer 从-128到127都是缓存起来的 所以 127以内的比较结果和127以外的比较结果是不一样的,看看JDK源码就知道了

1. System.out.println(a==b); //true
是因为在进行a==b比较时, 对b进行了自动拆箱
其等效于a == b.intValue(), 也就是 1 == 1, 当然为true
2. System.out.println(b.equals(a));//true
是因为对a执行了自动装箱
相当于b.equals(Integer.valueOf(a))
Integer的equals是比较两个Integer的值大小, 1 == 1
故也为true
3 楼 狼子六 2014-06-26  
WAMING5 写道
引用
注:在jdk1.5以上的版本中,基本类型和封装类型自动转化
例:
        int a= 1;
        Integer b =new Integer(1);
       
        System.out.println(a==b); //true
        System.out.println(b.equals(a));//true
对于这种结果小编也不是很懂,两者竟然引用相同的内存地址!!

封装数据类型在JDK中都做过优化,Integer 从-128到127都是缓存起来的 所以 127以内的比较结果和127以外的比较结果是不一样的,看看JDK源码就知道了


竟然是这样的啊,多谢指教
2 楼 lwfhunter 2014-06-25  
楼上正解。
1 楼 WAMING5 2014-06-25  
引用
注:在jdk1.5以上的版本中,基本类型和封装类型自动转化
例:
        int a= 1;
        Integer b =new Integer(1);
       
        System.out.println(a==b); //true
        System.out.println(b.equals(a));//true
对于这种结果小编也不是很懂,两者竟然引用相同的内存地址!!

封装数据类型在JDK中都做过优化,Integer 从-128到127都是缓存起来的 所以 127以内的比较结果和127以外的比较结果是不一样的,看看JDK源码就知道了

相关推荐

    Java中的==和equals区别

    ### Java中的`==`与`equals`方法的区别详解 在Java编程中,比较对象的相等性是一个常见的需求,但很多初学者对于`==`运算符与`equals`方法的区别容易混淆。本文将深入探讨两者之间的差异,以及它们在不同场景下的...

    java中equals和==的区别

    Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的概念,很多开发者容易混淆它们。理解这两个概念的区别是非常重要的,因为它们对编程的正确性和性能都有很大的影响。 首先,我们需要了解 Java ...

    java基础之 “==”与“equals”区别详解

    "java基础之“==”与“equals”区别详解" 根据java基础之“==”与“equals”区别详解,以下是相关知识点: 1. “==”操作符的作用: 在java中,“==”操作符用于比较两个对象是否相等。对于基本类型来说,“==”...

    ==和equals的区别

    Java 中的 == 和 equals 方法的区别 在 Java 中,比较值大小有两种方法:== 和 equals,这两个方法的使用场景和比较规则不同,下面我们将详细探讨它们的区别。 基本数据类型和引用数据类型 在 Java 中,有两种...

    ==与equals的比较

    "Java中的==和equals方法比较" 在Java中,`==`和`equals`是两种不同的比较方法,前者比较引用地址,而后者比较对象的实际内容。 首先,让我们来看看`==`运算符的用法。`==`运算符可以用来比较基本数据类型和引用...

    java中==和equals的区别

    前言 对于开发的程序员小伙伴,...equals:在Object中模式采用==比较,通常会重写 String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,那么接下来我们看看具体的区分 对象类型的比较

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

    在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...

    Java中==与equals的区别小结

    在Java编程语言中,了解`==`和`equals()`的区别是非常重要的,这涉及到对基本类型和对象的正确比较。下面我们将详细探讨这两个操作符的工作原理及其在不同情况下的使用。 首先,`==`操作符主要用于比较基本类型的...

    java中equals和==的区别.doc

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

    Java中==运算符与equals方法的区别及intern方法详解

    "Java中==运算符与equals方法的区别及intern方法详解" Java中==运算符与equals方法的区别是Java程序设计语言中的一個非常重要的概念,它們兩者都是用來比较字符串是否相等,但是它们的比较方式完全不同。 ==运算符...

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

    在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...

    浅谈java 中equals和==的区别

    在Java编程语言中,`equals()` 和 `==` 运算符经常被用来比较对象,但它们之间存在着显著的区别。理解这些差异对于编写正确、健壮的代码至关重要。以下是关于 `equals()` 和 `==` 在Java中的详细解释。 首先,`==` ...

    简单介绍java中的“==”和equals

    简单介绍java中的“==”和equals

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

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

    Java中==符号与equals()的使用详解(测试两个变量是否相等)

    Java中==符号与equals()的使用详解 Java中==符号与equals()的使用详解是Java程序中的一个重要概念,它们都是用来测试两个变量是否相等的,但是它们的使用方法和应用场景是不同的。下面我们将详细介绍Java中==符号...

    String中==与equals区别验证

    在Java编程语言中,`==` 运算符与 `equals()` 方法被广泛用于比较对象,尤其是当处理字符串(`String` 类)时。这两者之间的区别是理解Java内存管理和对象引用的关键。以下是对给定代码片段中所展示概念的详细解析。...

    java中==与equal()区别

    Java 中 == 与 equals() 的区别 Java 中的 == 和 equals() 是两个不同的比较方法,它们之间有着很大的区别。== 操作符专门用来比较两个变量的值是否相等,也就是比较变量所对应的内存中所存储的数值是否相同。用于...

    3 Java中关于==和equal的区别 以及equals()方法重写

    Java 中关于 == 和 equal 的区别 及其 equals() 方法重写 Java 语言是 Sun 公司的开发成果,其主要特点是可以执行强,与平台的无关性使其实用性更强。但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java ...

    Java中==与equals的区别

    用此blog记录我学习的过程,文中若有不恰当的地方,还望友情指出互相学习。 一、== 主要有两种比较形式 基本数据类型(也称原始数据类型):byte,...Java中所有的类都继承自Object类,equals()方法就在Object类中被

Global site tag (gtag.js) - Google Analytics