instanceof这个方法 很简单啦。就是判断左边的 是不是 右边 的 子类 。。
package Connection;
class monkey {
}
class longarmMonkey extends monkey {
}
class Engineer extends longarmMonkey {
}
class engineerSon extends Engineer {
}
public class Instanceof {
public static void main(String[] args) {
// 我是谁
woIam(new engineerSon());
}
private static void woIam(Object obj) {
if (obj instanceof Object) {
System.out.println("我是 祖宗");
}
if (obj instanceof monkey) {
System.out.println("我是猴子");
}
if (obj instanceof longarmMonkey) {
System.out.println("我是长臂猿");
}
if (obj instanceof Engineer) {
System.out.println("我是程序猿");
}
if (obj instanceof engineerSon) {
System.out.println("我是mini程序猿");
}
}
}
所以啊。如果 instanceof 左边的引用 的实例化对象 是右边 类 的子类 那也是返回true的。。
所以 不管你是 第几代玄孙 只要你有 祖先的血统 那么你就是 我的后代
public boolean equals(Object anObject) {
// 是为了比较是否是同一个引用,是否都是指向同一个内存中的事例
if (this == anObject) {
return true;
}
// 这里就用到了 instanceof 就是判断 穿进来的数据是不是 String类型的 对象
// 这里注意了 虽然 穿进来的是object类型的 但是只能是 String 类 或者是String类的父类才可以 为true
if (anObject instanceof String) {
String anotherString = (String)anObject;//向下转型
int n = value.length;
if (n == anotherString.value.length) {//判断 长度是否一致 为了加快判断
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}//这个判断 的算法很赞啊。。判断两个相同字符串的每一位 是否相同
return true;
}
}
return false;
}