• ==和equals()的不同点


    两者都可以用于对象的比较。"=="用于比较两个对象的内存地址值(引用值)是否相等,equals()方法用于比较两个对象的内容是否一致。

    String str1 = new String("java");

    String str2 = new String("java");

    String str3 = str2;

    str1和str2的内容完全一样,但是它两在堆内存中处于不同的内存位置,内存地址不同,所以str1==str2是FALSE!str1.equals(str2)是TRUE!

    然而还需要注意的是,若对象类型的类为Object类或者Object类的子类,那么则需要覆写Object类中的equals方法才能准确的对两个对象内容进行比较,不然比较的是两个对象的地址比较。

    //没有覆写equals()方法
    class Person{
        private String name;
        private int age;
        public Person(String name,int age){
            this.name = name;
            this.age = age;
        }
    }
    
    class Object {
        public static void main(String[] args) {
            Person p1 = new Person("张三",12);
            Person p2 = new Person("张三",12);
            System.out.println(p1.equals(p2)?"是同一个人":"是两个人");        
        }
    }

    程序运行结果为:是两个人。此时equals()就相当于"=="

  • 相关阅读:
    caffe:使用C++来提取任意一张图片的特征(从内存读取数据)
    python:控制鼠标和键盘
    .dll 文件编写和使用
    python:打包成exe程序
    python:小乌龟turtle
    python:input()和raw_input()
    C++:哈希
    C++:线程(std::thread)
    GitHub:Git的使用
    链表
  • 原文地址:https://www.cnblogs.com/volcan1/p/6950043.html
Copyright © 2020-2023  润新知