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
  • 相关阅读:
    第二章 算法基础 思考题2-4(逆序对)
    JSF中使用f:ajax标签无刷新页面改变数据
    JSF在ui:include中传递参数到对应控制层
    JSF通过超链接传递参数到控制层
    给JavaScript文件传入参数的几种方法
    Spring 与 @Resource注解
    GWT嵌入纯HTML页面
    一个分类,两个问题之ArrayList
    GWT更改元素样式属性
    Hello 2019 D 素因子贡献法计算期望 + 概率dp + 滚动数组
  • 原文地址:https://www.cnblogs.com/hellohero55/p/12663331.html
Copyright © 2011-2022 走看看