html免费模板网站,wordpress _x,做网站需要哪些素材,品牌建设和品牌推广✅作者简介#xff1a;大家好#xff0c;我是橘橙黄又青#xff0c;一个想要与大家共同进步的男人#x1f609;#x1f609;
#x1f34e;个人主页#xff1a;再无B#xff5e;U#xff5e;G-CSDN博客
1.instanceof instanceof 是 Java 的保留关键字。它的作用是测试…
✅作者简介大家好我是橘橙黄又青一个想要与大家共同进步的男人
个人主页再无BUG-CSDN博客
1.instanceof instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例返回 boolean 的数据类型 解释一下 这里说明下 类的实例包含本身的实例以及所有直接或间接子类的实例 instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系也就是说需要位于同一个继承树否则会编译错误 instanceof 关键词官方介绍https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.20.2
来个案例看看
给三个类 ~ 代码
public interface A {
}public class B implements A{}public class C extends B{
}
代码测试案例
public class InstanceofTest3 {public static void main(String[] args) {A a null;boolean result;result a instanceof A;System.out.println(result); // 结果false null用instanceof跟任何类型比较时都是falsea new B();b new B();result a instanceof A;System.out.println(result); // 结果true a是接口A的实例对象引用指向子类类B类B实现了接口A所以属于同一个继承树分支result a instanceof B;System.out.println(result); // 结果true a是接口A的实例对象引用指向子类类B类B实现了接口A所以属于同一个继承树分支result b instanceof A;System.out.println(result);// 结果true b是类B的实例对象类B实现了接口A所以属于同一个继承树分支result b instanceof B;System.out.println(result);// 结果true b是类B的实例对象类B实现了接口A所以属于同一个继承树分支B b2 new C();result b2 instanceof A;System.out.println(result); // 结果true b2是父类B引用指向子类C类B实现了接口A所以属于同一个继承树分支result b2 instanceof B;System.out.println(result); // 结果true b2是父类B引用指向子类C所以属于同一个继承树分支result b2 instanceof C;System.out.println(result); // 结果true b2是父类B引用指向子类C所以属于同一个继承树分支}
}
instanceof的应用
instanceof一般用于对象类型强制转换
比如说
public class C extends B {private void print(Object a) {System.out.println(a instanceof);}public void convert(String b) {if (b instanceof Object) {//如果b和Object有关系则执行if里面的语句,相反不执行this.print(b);}}}2.equals 是一个方法并非运算符 只适用于引用数据类型 Object类中equals( )的定义 public boolean equals(object obj) {return (this obj); //this是指类的当前实例}
类中定义的equals()和的作用是相同的比较两个对象的地址值是否相同。即两个引用是否指向同一个对象实体 但是
Java中重写的equals()
这里我们看一下java的一些自带的包装类怎么重写equals()的
public boolean equals(Object anObject) {if (this anObject) {return 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;}
我们可以非常清晰的看到String的equals()方法是进行内容比较而不是单纯的引用比较。
注意 既可以比基本类型也可以比较引用类型。对于基本类型就是比较值对于引用类型就是比较内存地址equals的话它是属于java.lang.Object类里面的方法如果该方法没有被重写过默认也是我们可以看到String等类的equals方法是被重写过的而且String类在日常开发中用的比较多久而久之形成了equals是比较值的错误观点。具体要看自定义类里有没有重写Object的equals方法来判断。通常情况下重写equals方法会比较类中的相应属性是否都相等 好啦今天就到这里了感谢观看。