Java对象类型的判断详解
在Java中,可使用`instanceof`运算符来判断一个对象的类型。
`instanceof`运算符用于检查一个对象是否是是一个特定类的实例,还是是其子类的实例。它的使用方式是:
```java
object instanceof ClassName
```
其中,`object`是要判断类型的对象,`ClassName`是要判断的类名。
当`object`是`ClassName`类或其子类的实例时,`instanceof`运算符返回`true`,否则返回`false`。
下面是一个示例:
```java
public class Main {
public static void main(String[] args) {
String str = "Hello World";
Integer number = 10;
System.out.println(str instanceof String); // true
System.out.println(str instanceof Object); // true
System.out.println(number instanceof Integer); // true
System.out.println(number instanceof Number); // true
System.out.println(str instanceof Integer); // false
System.out.println(number instanceof String); // false
}
}
```
在上面的示例中,`str`是`String`类的实例,`number`是`Integer`类的实例。因此,`str instanceof String`和`number instanceof Integer`都返回`true`。
另外,Java中的援用类型可以是一个接口的实例。在这类情况下,`instanceof`运算符也会返回`true`。
```java
public interface Printable {
void print();
}
public class MyClass implements Printable {
public void print() {
System.out.println("Printing...");
}
}
public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
System.out.println(myClass instanceof Printable); // true
System.out.println(myClass instanceof Object); // true
}
}
```
在上面的示例中,`MyClass`实现了`Printable`接口。因此,`myClass instanceof Printable`返回`true`。
需要注意的是,`instanceof`运算符不能用于判断基本数据类型。如果需要判断基本数据类型,可使用包装类。
```java
int number = 10;
System.out.println(number instanceof Integer); // 编译毛病
System.out.println(Integer.valueOf(number) instanceof Integer); // true
```
在上面的示例中,`number`是基本数据类型`int`,不能直接使用`instanceof`运算符判断。可使用`Integer.valueOf(number)`将其转换为`Integer`对象,然后再使用`instanceof`运算符进行判断。
TOP