• Java学习树--3 判断相等性,类型相等,类型转换


    Java中有判断相等性 == ,equals() 方法

    ==判断相等性


    == 判断基本数据类型的相等性,基本数据类型的变量字面量相等,即返回true.
    == 判断引用类型的相等性,只有是相同引用类型的相同引用,才会返回true.
    == 判断基本数据类型和包装类的相等性,只有基本数据类型的字面量和包装类型的值相等,才会返回true.
    特别:String是引用类型,不是基本数据类型。String s="ff" ;s是一个引用,与f=new String("ff")不是同一个引用,所以s==f 返回false.
    Integer i=new Integer(11);
            int k=11;
            Integer j=new Integer(11);
            System.out.println(i==j);  //false
            System.out.println(k==i);  //true
            System.out.println(i.equals(j));  //true
            System.out.println("i="+i.hashCode());  //11
            System.out.println("j="+j.hashCode());  //11
    

    ### equals()方法判断引用类型的相等性
    1. 如果是同一个引用,那么会直接返回true 2. 如果不是同一个引用,那么会判断类型是否相同,然后判断字面量是否相等,如果相等,那么会直接返回true.
    记住一个原则,如果equals()返回true,那么对象的hashcode是相等的。不要颠倒。
    重写equals方法一个示例 ``` public class Base { private int a; private int b;
    public Base(int a, int b) {
        this.a = a;
        this.b = b;
    }
    
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false; //利用getClass判断引用类型是否是统一类型
        Base base = (Base) o;
        return a == base.a &&
                b == base.b;
    }
    
    @Override
    public int hashCode() {
        return Objects.hash(a, b);
    }
    

    }

    
    ### 判断引用类型是否同一个类型
    
    java中有instanceof 关键词判断对象的类型
    
    1. 可以使用 a instanceof Object 方法判断某个对象变量是否属于某一个类型
    2. 使用a.getClass()==b.getClass() 方法判断两个变量是否是相同类型
    
    <br/>
    引用类型之间的转换,转换关系通常发生在继承关系的类中。
    <br/>
    父类与子类之间的转换关系有:向上转换,向下转换。
    <br/>
    其中super 不能向下转换,转换成为子类
    子类child能进行向上转换,转换成为父类,子类转换成为父类是隐式转换。
    
    <br/>
    但是如果父类变量实际引用指向子类对象,那么这个时候父类能转换成为子类,属于强制转换。
    
        Base base=new Base(1,2); //父类
        Child child=new Child(2,3,5); //子类
    
        Base b=child;         //子类转换成为父类
        Child v= (Child) b;  //父类转换成子类,前提是必需有上一步操作。
    
  • 相关阅读:
    T-SQL:事务锁下的并发处理(十五)
    C# Quartz定时任务corn时间设置详解
    C# QuartZ使用实例写成服务
    SQL SERVER 一个SQL语句的执行顺序
    SQL SERVER 如何判断是不是年,月最后一天
    SQL SERVER 如何声明一个变量
    SQL SERVER GO命令循环使用实例
    T-SQL:批GO使用实例(十四)
    VS2017进程为idXXXX 无法启动解决方案
    UI5-文档-4.20-Aggregation Binding
  • 原文地址:https://www.cnblogs.com/lin7155/p/14849112.html
Copyright © 2020-2023  润新知