zoukankan      html  css  js  c++  java
  • ==和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()就相当于"=="

  • 相关阅读:
    队列 和 线程 之GCD dispatch
    ios NSUserDefaults存储数据(偏好设置)
    Binary Tree postorder Traversal
    Binary Tree Inorder Traversal
    Binary Tree Preorder Traversal
    Rotate List
    Reversed Linked List(Reverse a singly linked list)
    Remove Element
    Swap Nodes in Pairs
    Add Two Numbers
  • 原文地址:https://www.cnblogs.com/volcan1/p/6950043.html
Copyright © 2011-2022 走看看