instanceof是运算符只被用于对象引用变量,检查左边的被测试对象是不是右边类或接口的实例化。
这里有两个方面进行解释:
1.语法:针对声明的类
声明被测试对象的类必须与右边类,要么是继承关系,要么是接口关系,否则会报错。如下:
[code="java"] public void TA(Cloneable e){
if(e instanceof String){
}
}
public void TA(E e){
if(e instanceof String){
}
}[/code]
这些无法通过eclipse的语法检测。
2.用法:针对创建的类实例化的类
通过1可以知道左面的声明类和右边的类应该有一个主次关系,但是左面用来实例化的类和右边不一定是主次关系,有可能是同一个父类的同一个子类。这样该运算符的用法就有两层含义:a)检测左面的实例化的类是否是左边的子类b)检测左面的实例化的类是否是其父类的某一个子类
package com.test.instanceof2;
class InstanceOf {
public static void main(String args[]) {
B b = new B();
C c = new C();
D d = new D();
E e = new E();
F f = new F();
H h = new H();
A g = new G();
if (b instanceof B)
System.out.println("b is instance of B");
if (c instanceof C)
System.out.println("c is instance of C");
if (c instanceof A)
System.out.println("c can be cast to A");
if (c instanceof B)
System.out.println("c can be cast to B");
if (d instanceof A)
System.out.println("d can be cast to A");
if (d instanceof B)
System.out.println("d can be cast to B");
if (g instanceof E)
System.out.println("d can be cast to B");
System.out.println();
A ob;
ob = d; // A reference to d
System.out.println("ob now refers to d");
if (ob instanceof D)
System.out.println("ob is instance of D");
System.out.println();
ob = c; // A reference to c
System.out.println("ob now refers to c");
if (ob instanceof D)
System.out.println("ob can be cast to D");
else
System.out.println("ob cannot be cast to D");
if (ob instanceof A)
System.out.println("ob can be cast to A");
System.out.println();
// all objects can be cast to Object
if (b instanceof Object)
System.out.println("b may be cast to Object");
if (c instanceof Object)
System.out.println("c may be cast to Object");
if (d instanceof Object)
System.out.println("d may be cast to Object");
}
public void TA(Object e){
if(e instanceof String){
}
}
}
interface A {
}
class B {
int i, j;
}
class C extends B implements A {
int k;
}
class D extends B implements A {
int k;
}
class E extends B {
int k;
}
class F extends B {
int k;
}
class G implements A{
}
class H implements A{
}
分享到:
相关推荐
javascript 表达式和运算符详解 javascript 表达式是指能计算出值得任何可用程序单元。它是一种短语,javascript 解释器用来产生一个值。javascript 表达式可以分为六种类型:原始表达式、初始化表达式、函数表达式...
本次教程的主题围绕着Java中的高级类概念展开,具体包括类构造函数、`this`关键字、静态属性和方法、`instanceof`运算符等内容。这些知识点对于深入理解Java面向对象编程至关重要。 #### 二、类构造函数 构造函数是...
比如,如果我们有一个对象,我们想验证这个对象是否是某个特定类的一个对象实例,instanceof运算符便派上了用场。如果对象确实是该类的实例,那么instanceof运算符会返回真值(true);如果不是,就返回假值(false...
一.instanceof运算符:此运算符可以判断一个变量是否是某个对象(类)的实例,返回值是布尔类型的。想要理解它的作用,必须对面向对象有所理解: 代码实例如下: 代码如下:var str=new String(“antzone”); console....
Java中的`instanceof`运算符是用来在程序运行时判断一个对象是否属于某个特定类或其子类(或者实现了某个接口)的关键字。它允许我们动态地检查对象的类型,这对于多态性和类型安全的编程非常有用。以下是`...
- `instanceof`:检测一个对象是否属于某个构造函数的实例,如 `obj instanceof Foo`。 - `typeof`:返回变量的类型,如 `typeof obj`。 - `new` 运算符:用于创建对象实例,如 `var obj = new Foo()`。 - `this` ...
类构造函数_this_静态属性方法_instanceof运算符 Java基础 5.类属性及类方法定义 Java基础 6.继承与多态 Java基础 7.接口 Java基础 8.类基础知识复习 Java基础 9.异常处理 SpringMVC_1_开发环境搭建 SpringMVC_10_...
在JavaScript中,typeof和instanceof是常用的两种检测数据类型的方式,它们各自有其适用的场景和特点。 ### typeof typeof 是一个一元运算符,它用于返回变量或表达式的类型。当使用typeof运算符时,它通常会返回...
### Java运算符优先级详解 在Java编程语言中,了解并正确使用运算符优先级对于构建高效、可读性强的程序至关重要。虽然建议在实际开发过程中通过使用括号来明确表达式的计算顺序,而非依赖于复杂的优先级规则,但...
#### 三、`instanceof`运算符详解 `instanceof`是一个用于判断对象是否为某个构造函数实例的运算符。其语法格式为: ``` obj instanceof constructor ``` 其中: - `obj` 是一个对象。 - `constructor` 是一个...
#### 四、具体运算符详解 - **算术运算符**: - `+`:加法运算。 - `-`:减法运算。 - `*`:乘法运算。 - `/`:除法运算。 - `%`:取模运算,返回除法的余数。 - **自增自减运算符**: - `++`:自增运算符,...
### Java中常见的几种运算符详解 #### 一、算术运算符 在Java中,算术运算符是最基本也是最常用的运算符之一。主要包括以下几种: - **加法(+)**:用于两个数值的相加。 - **减法(-)**:用于两个数值的相减。...
### Java运算符优先级别详解 在Java编程语言中,运算符是执行基本操作的关键组成部分,它们决定了表达式中各个部分的处理方式。了解运算符的优先级和结合性对于正确编写和理解Java代码至关重要。 #### 运算符...
instanceof运算符用于检查构造函数的prototype属性是否出现在对象的原型链上。如果某个变量a是数组,那么a的原型链上会存在Array.prototype。因此,可以使用a instanceof Array来判断a是否为数组。例如: ```...
如果一个对象的原型链中包含某个构造函数的prototype属性,则instanceof运算符返回true,否则返回false。 在JavaScript中,原型继承的机制提供了一种与传统基于类的继承不同的对象创建和共享方法的模式。虽然ES6...