javaisinstanceof
‘壹’ java中 a instanceof b的用法 前面的a对应的实例如不是b类的类型或b子类类型 是否会报错
bill instanceOf PhoneBill 这就相当与一个布尔表达式,结果 是true 或 false ,不会报错
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True
‘贰’ Java 中:if(Object类型 instanceof Vector集合)
instanceof是Java的一个二元操作符,和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
声明一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为true。
instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类:
public class Bill {//省略细节}
public class PhoneBill extends Bill {//省略细节}
public class GasBill extends Bill {//省略细节}
在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//计算电话账单
}
if (bill instanceof GasBill) {
//计算燃气账单
}
...
}
这样就可以用一个方法处理两种子类。
然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
public double calculate(PhoneBill bill) {
//计算电话账单
}
public double calculate(GasBill bill) {
//计算燃气账单
}
所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。
instanceof 一般情况下 用在对象类型的强制转换 ,
例如:
继承关系 class Manager extends Employee
----------------------------------------------------------
public void doSomething(Employee e) {
if ( e instanceof Mangaer){
Manager m = (Manager) e ;
}
}
-----------------------------------------------------------
‘叁’ Java里isInstance,instanceof和isAssignableFrom的区别
对象 instanceof 类 obj instanceof class 如果class obj1 = obj成立的话,返回true,否则返回false 类.isInstance(对象) class.isInstance(obj) 如果class obj1 = obj成立的话,返回true,否则返回false
‘肆’ java中instanceof和getClass的区别分析
java instanceof和getClass()的区别以及继承与组合的区别
1.instanceof:比较的是继承关系或者实现关系的类类型,子类对象或者实现类对象放在前面,例如:
class A{}
class B extends A{}
B b = new B();
b instanceof A
2.getClass():比较任何类的类型(两个毫不相干的类型,当然这也没啥意义),也可以通过isAssignableFrom(Class<?> cls)方法比较,以下是API原意:
判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回true;否则返回 false。如果该 Class 表示一个基本类型,且指定的 Class 参数正是该 Class 对象,则该方法返回 true;否则返回 false。
它是通过父类名称点class,或者父类对象点getClass(),点isAssignableFrom(子类名称点class,或者子类对象点getClass()),进行比较。
‘伍’ java中怎么使用instanceof运算符判断对象是不是由某个类的是赋值true 不是则
使用方法是 对象 instanceof 类,返回的本身就是布尔类型
‘陆’ java 中 instanceof 怎么理解,能否举个例子,看了书还是有点模糊
instanceof 类似一个符号一样,类似+号,-号,=号这种的,你可以这样理解的
举个例子哈,假如现在我有两个父类,Person类和Animal类,现在有以下关系
Student extends Person(学生肯定是一个人,所以学生类继承人类)
Dog extends Animal(狗肯定是动物,所以狗类继承动物类)
所以现在我new一个Student对象小明和一个Dog对象旺财
Student student= new Student("小明");
Dog dog = new Dog("旺财");
你看+号,1+2表示是前者1和后者2相加是吧,返回一个数字
而instanceof 表示,前者对象是否是后者对象的一个实例,返回true或false,好,现在以上例子来说
student instanceof Student // return true
小明肯定是学生类的一个实例
student instanceof Person // return true
这也是true,因为小明是一个学生,他也是一个人啊,所以小明肯定是人的一个实例
dog instanceof Person // return false
这就是false了,因为旺财是一条狗,不是人,所以它不是人的一个实例,所以返回false
总结:instanceof多用在多态的使用中用于判断当前类是哪些父类的子类
‘柒’ Java 中有没有直接可以判断两个类是否相同的方法
java没有直接判断两个雷是否相同,但提供了如下方法:
1、如果说两个对象的判断可以使用 equals,或者 ==。
2、如果判断对象是否某个类 可以使用 instanceof ,isInstance
3、如果两个类的比较 可以使用 isAssignableFrom,但只能得到是否是自身或者子类的结果,不能完
如下代码:
importjava.util.ArrayList;
publicclassceshi{
publicstaticvoidmain(String[]args){
Strings1=newString("javaisland");//测试两个对象是否相同
System.out.println(s1instanceofString);//true
Strings2=newString("javaisland");//测试是否对象属于某个类
System.out.println(String.class.isInstance(s2));//true
System.out.println(ArrayList.class.isAssignableFrom(Object.class));//false
System.out.println(Object.class.isAssignableFrom(ArrayList.class));//true
}
}
运行结果如下:
‘捌’ java中 instanceof 运算符的用法
instanceof的作用是测试它左边的对象是否是它右边的类的实例(或对象),因此instanceof的左边AA应该是某个类的对象的名字,而右边的BB应该是某个类的名字。作个比喻假设C是一个类,有语句C mc=new C(); 语句mc instanceof C;测试的结果应为true,很明显左边的对象mc是类C的实例。而语句md instanceof C;则反回false,因为md不是类C的一个实例。
BB应该不能是一个变量名,比如int i=2; 那么不能是AA instanceof i;如果是这样那AA应该为什么呢?因为AA是应是一个名字,因此这样的测试是无意义的。
现在你应该车底明白了吧