zoukankan      html  css  js  c++  java
  • java equals总结

    一、 ==运算符和equals的区别

    == 可以使用在基本数据类型变量 和引用数据类型变量

    如果比较的是基本数据类型变量;比较两个变量保存的数据是否相等。(不一定类型相等),对于引用类型就是比较内存地址

    equals 它是属于java.lang.object类里面的方法,如果该方法没有被重写过默认也是==

    String类的equals方法是被重写过的,所以 String equals时会为true

    Object类中 equals()的定义

    public boolean equals(Object obj) {
            return (this == obj);
        }

    object类中定义的equals和==的作用是相同的,比较两个对象的地址值是否相同;

    String、Date File包装类都重写了equals方法,比较的不是两个引用的地址是否相同,而是比较两个对象的 实体内容是否相同。

    public class Order {
        
        private int orderId;
        
        private String orderName;
    
        public int getOrderId() {
            return orderId;
        }
    
        public void setOrderId(int orderId) {
            this.orderId = orderId;
        }
    
        public String getOrderName() {
            return orderName;
        }
    
        public void setOrderName(String orderName) {
            this.orderName = orderName;
        }
        
    
        public Order(int orderId, String orderName) {
            super();
            this.orderId = orderId;
            this.orderName = orderName;
        }
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + orderId;
            result = prime * result + ((orderName == null) ? 0 : orderName.hashCode());
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Order other = (Order) obj;
            if (orderId != other.orderId)
                return false;
            if (orderName == null) {
                if (other.orderName != null)
                    return false;
            } else if (!orderName.equals(other.orderName))
                return false;
            return true;
        }
        
    }

    public class EqualsTest {
        
        public static void main(String[] args) {
            
            int i=1;
            double k=1;
            System.out.println( i==k);
            Order or1=new Order(1,"aa");
            Order or2=new Order(1,"aa");
            //若用两个对象==则是为false的
            System.out.println(or1==or2);
            
            System.out.println(or1.equals(or2));
        }
    }

    结果:true
    false
    true
  • 相关阅读:
    Email:2017
    mac下使用QuickTime录屏及上传youku注意事项
    unity, 自定义类中使用print
    unity, 集成iOS广告sdk注意事项
    xcode,不要将.a文件拖到xcode里
    unity, 慎用DontDestroyOnLoad
    unity, 弹出panel一定要放在UI Hierarchy的底端
    unity, iOS下画面错乱解法
    (转)NSString to string(支持中文)
    objective-c的观察者模式
  • 原文地址:https://www.cnblogs.com/hellohero55/p/12663331.html
Copyright © 2011-2022 走看看