`

==比较引用(句柄), equals()比较内容,对么???

    博客分类:
  • Java
 
阅读更多

public class Example
{
    public static void main(String[] args)
    {
        Example e1=new Example();
        Example e2=new Example();
        System.out.println(e1.equals(e2));
        System.out.println(e1==e2);
    }
}

 

这个时候会返回两个 False

 

public class Example1
{
    public static void main(String[] args)
    {
        String s1=new String("abc");
        String s2=new String("abc");
        System.out.println(s1==s2);//false
        System.out.println(s1.equals(s2));//true
    }
}

 

这个时候会返回一个 False 一个 True

为何会产生上述结果:

 

这是由于

Object 中的 equals(Object)方法其标准形式为
public boolean equals(Object obj),是使用"=="比较两个对象的,所以如果不覆盖equals方法

==和 equals()一样是比较引用的。

 

 

分享到:
评论

相关推荐

    java中==与equal()区别

    其它对象的 equals 方法仅当被比较的两个引用指向的对象内容相同时,对象的 equals() 方法返回 true。“==”和“!=”比较的是地址,也可以认为比较的是对象句柄;而 equals() 比较的是对象内容。 对于 String 对象...

    对String的深入理解

    例如,`s1.equals(s2)`会判断s1和s2所引用的字符串内容是否相同,不论它们是否指向同一个对象。 5. 字符串的+运算: 当使用`+`进行字符串连接时,JVM会自动处理字符串转换和连接过程。对于`str = 1+2+str+3+4;`...

    JAVA虚拟机内存分配与回收机制[文].pdf

    在比较类里的数值是否相等时,应该使用equals()方法,而不是使用==,因为==是用来比较对象的引用是否相同的,而equals()方法是用来比较对象的实际值是否相同的。 JAVA虚拟机的内存分配与回收机制是JAVA语言的核心...

    34个java问题.pdf

    - `equals`:比较两个对象的内容是否相同。 #### 27. hashCode 与 equals (重要) - `hashCode`:返回对象的哈希码值,用于集合类中快速查找对象。 - `equals`:判断两个对象是否相等。通常,如果两个对象相等,...

    C#中下笔记

    12. **== 和 Equals**:在C#中,`==`运算符重载通常会调用`Equals`方法,对于字符串,它们比较内容是否相等。`Equals`方法可以被重写,如在字符串中,比较两个字符串的内容。若比较两个对象是否相等,应使用`object....

    Java堆和栈的区别

    在比较类里面的数值是否相等时,用 equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==。例如,String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); //true 可以看出 str1 和...

    C#面试大全

    委托是C#中一种引用类型,可以存储对方法的引用,并可以在任何地方调用它,类似于函数指针,但更安全和灵活。 ### 2. 高级特性 #### 2.1 封装与继承 `sealed`关键字用于防止一个类被继承,提供了一种封装机制。而...

    区别Java中堆与栈区别Java中堆与栈

    在比较类里面的数值是否相等时,用 equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==。 在使用诸如 String str = "abc";的格式定义类时,总是想当然地认为,创建了 String 类的对象 str。担心陷阱!...

    Android代码

    这通常需要先获取到这些视图组件的引用(句柄)。 **实现方式:** 1. **获取视图引用:** - 使用`findViewById`方法来获取布局文件中的视图组件。 - 该方法接收一个资源ID作为参数,返回相应视图组件的引用。 2....

    C#学习实践

    如果要比较值,需要重写Equals方法。 **6.8 运算符重载** 运算符重载是指为已有的运算符提供新的行为。C#支持运算符重载,允许开发者扩展内置运算符的功能。 **6.9 运算符的工作方式** 深入理解运算符的工作原理...

    jdk1.8/16,有需要的自己拿

    1. **变量句柄(Records)**:这是一种简化创建不可变数据类的方式,自动处理构造、equals、hashCode和toString方法。 2. **开关表达式(Switch Expressions)**:扩展了switch语句,使其可以作为表达式返回值,支持...

    非常有用的Android代码

    为了与屏幕上的控件进行交互,通常需要先通过`findViewById`方法获取这些控件的引用,然后就可以通过这个引用来进行操作。例如,要修改一个TextView的文本,可以这样做: ```java TextView msgTextView = (TextView...

    EffectiveC#中文版

    - `==`运算符、`.Equals()`方法以及`Object.ReferenceEquals()`都有不同的用途和行为。 - 理解它们的区别可以帮助避免逻辑错误。 10. **理解`GetHashCode()`的缺陷** - `GetHashCode()`用于散列集合中,必须正确...

    More Java Pitfalls中文版

    6. **内存泄漏**:虽然Java有垃圾回收机制,但过度使用静态变量、集合类中的引用或未释放的本地方法句柄都可能导致内存泄漏。编写代码时要注意适时解除不再使用的对象引用。 7. **字符串操作**:Java的字符串是不可...

    15个Android很有用的代码片段.pdf

    根据给定的文件信息,以下是对15个Android很有用的代码片段的详细解析与扩展,旨在深入理解每个代码片段背后的原理与应用: ### 1. 检查是否有存储卡插入 ```java String status = Environment....

    C#稳定性编程注意事宜.docx

    以下是对标题和描述中提到的知识点的详细解释,以及一些额外的相关内容: 1. **线程安全**:当多个线程同时访问同一资源时,可能导致数据不一致或引发异常。为确保线程安全,可以使用`lock`关键字进行互斥访问,...

    C#全能速查宝典

    1.4.10 Equals方法——比较两个字符串对象 53 1.4.11 First函数——返回查询结果的第一个记录 55 1.4.12 FirstDayOfWeek属性——获取或设置一周中的第一天 56 1.4.13 Format方法——格式化字符串 56 1.4.14 GETDATE...

    提高C#编程水平的50个要点

    使用`static Equals`或`instance Equals`方法来比较对象的内容是否相等。 ### 10. `GetHashCode`方法的实现 - **重要性**:`GetHashCode`方法对于基于哈希的集合类非常重要。 - **实践建议**:为类实现`...

    Effective_C#中文版_改善C#程序的50种方法.pdf

    =`、`.Equals()`方法之间的关系及差异。 - **应用场景**: - 实现相等性比较时,确保逻辑一致性和性能。 **原则10:明白`GetHashCode()`的缺陷** - **核心思想**:理解`GetHashCode()`的正确实现对哈希表的重要性...

Global site tag (gtag.js) - Google Analytics