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;  //父类转换成子类,前提是必需有上一步操作。
原文地址:https://www.cnblogs.com/lin7155/p/14849112.html