`
08284008
  • 浏览: 48879 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

==和equals的理解

阅读更多
Value value = new Value();
        Value value2 = new Value();
        value.i = value2.i = 100;
        //equals()方法默认是比较对象内存地址的引用,如果需要比较两个对象的值是否相同,
        //需要新类重写equals()方法
        System.out.println(value.equals(value2));//false
        String str = new String();
        String str1 = new String();
        str = "string";
        str1 = "string";
        /**
         * (我的理解)
         * String str = new String();在内存中创建以str对象,并为其在堆中分配空间
         * String str1 = new String();在内存中创建以str1对象,并为其在堆中分配空间
         * str = "string";在堆中产生一个值为“string”的对象,str指向这个对象
         * str1 = "string";str1也指向这个对象
         * 因此str和str1的引用地址相同
         * 疑问:
         * str = "string";
         * str1 = "string";
         * 这里应该在堆中产生两个值为“string”的对象,并为其在堆中分配空间
         * 那str和str1的引用地址就不相同。为什么在堆中只产生一个值为“string”的对象???
         */
        System.out.println(str.equals(str1));//true
        System.out.println(str == str1);//true
        /**
         * 只有用new了,才在堆中分配空间,创建对象
         * String str2 = new String("string1");
         * String str3 = new String("string1");
         * 虽然值是一样的,但是在堆中存在两个对象,因此str2和str3的引用地址不相同
         */
        String str2 = new String("string1");
        String str3 = new String("string1");
        //比较对象的引用
        System.out.println(str2 == str3);//false
        //比较对象的值,String重写了equals()
        System.out.println(str2.equals(str3));//true
        String str4;
        String str5;
        str4 = "string";
        str5 = "string";
        System.out.println(str4 == str5);//true
        System.out.println(str4.equals(str5));//true

 

1
0
分享到:
评论
1 楼 08284008 2012-05-18  
java的大多数类都重写了equals()方法

相关推荐

    java中equals和==的区别

    能够加强对java中equals与==区别的理解。

    Java解惑系列之一--equals和==之间究竟有什么区别

    equals和==的区别?...大家对于equals这个函数的理解不够深入,只凭上面的一句话,我们是无法了解equals这个函数的来龙去脉的。 第二我个人认为这个问题出的非常的愚蠢,所以忍不住拿出来调侃一下,呵呵。

    java中如何区分==和equals

    主要介绍了java中如何区分==和equals,文中讲解的非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    java中equals和==的区别.

    通过例子详细解释java中equals和==区别。实例丰富,适合初学者,便于理解,

    java String 类的一些理解 关于==、equals、null

    在对字符串的相等判断,==判断的是地址是否相同,equal()判断的是字符值是否相同。大多数时候==跟equal()的结果都是相同的。

    java文档,方便理解

    对于理解java类有一些帮助,如java append方法,substring,还有“==”和equals的区别,最后还有说到一些关于正则表达式的介绍

    深入理解equals和hashCode方法

    在Java中,equals和hashCode方法是Object中提供的两个方法,这两个方法对以后的学习有很大的帮助,本文就深度来去讲解这两个方法。下面小编带大家来一起学习吧

    java——让学员少走弯路

    Java的一些基本概念,Java的起源、为什么我们要...Java的常用包,"=="和"equals"的用法,基本数据类型与引用类型,对象的克隆。 数组的复制与排序,Runtime类与Process类,Class类与反射API,Runtime类与单例设计模式。

    java初学者必须理解的6大问题

    问题一:我声明了什么!  String s = "Hello world!";  许多人都做过这样的事情,但是,我们到底... 问题二:"=="和equals方法究竟有什么区别?  ==操作符专门用来比较变量的值是否相等。比较好理解的一点是:

    基于Java字符串 "==" 与 "equals" 的深入理解

    本篇文章是对Java中的字符串"=="与"equals"进行了详细的分析介绍,需要的朋友参考下

    Java中hashCode和equals方法的正确使用

    在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。  hashCode()和equals()定义在Object类中,这...

    java六大必须理解的问题-来自网络少许有误(非常适合初学者).doc

    问题二:"=="和equals方法究竟有什么区别? ==操作符专门用来比较变量的值是否相等。比较好理解的一点是: int a=10; int b=10; 则a==b将是true。 但不好理解的地方是: String a=new String("foo"); String...

    java 经典面试题30道

    = =和equals有什么区别? 答: = =是操作符号,对于基本类型来说比较的是值,对于引用类型来说,比较的是引用,也可以理解为内存地址。而equals方法是属于超类Object的方法,其实默认情况下也是用==比较,只是很多类...

    Java的Object类讲解案例代码 equals()、hashCode()、finalize()、clone()、wait()

    本案例代码将详细展示Object类的使用方法,并提供一些实际场景下的案例,以帮助开发者更好地理解和运用这些方法。 这份案例代码适合以下人群: Java初学者:如果你是刚开始学习Java编程,那么Object类是一个重要的...

    学会这些java面试题让你吊打面试官

    学会这些java面试题让你吊打面试官!面试前看看,让你充满自信,不再惧怕面试官各种刁难。1.Java中内存管理及各区域内存储数据的生命周期? 2.JVM堆内存的分代管理以及垃圾回收流程?...10.==和equals的区别?。。。。。。

    Java初学者都必须理解的六大问题

    所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。同样也可以看出,Object的equals方法没有达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者...

    涵盖了90%以上的面试题

    "=="和equals方法究竟有什么区别 String,StringBuffer,StringBuilder有什么区别 java中的数组是不是对象 数组初始化的方式有哪几种 length属性和length()方法有什么区别 finally块中的代码什么时候被执行 Java中的...

    Java String 十大常见问题

     如果你了解字符串的驻留(String Interning)则会更好地理解这个问题。  2. 对于敏感信息,为何使用char[]要比String更好?  String是不可变对象,意思是一旦创建,那么整个对象不可以改变,即使新手觉得String...

    Java面试题-基础和集合.docx

    其中,讨论了Java为什么不支持多继承、==和equals的区别、方法重载的条件、String为何设计成不可变、包装类的应用场景、Integer的高速缓存机制等多个方面。 通过面试题的逐一解答,读者可以了解到Java语言的一些...

Global site tag (gtag.js) - Google Analytics