Java中instanceof关键字的用法

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 
用法: 
result = object instanceof class 
参数: 
Result:布尔类型。 
Object:必选项。任意对象表达式。 
Class:必选项。任意已定义的对象类。 
说明: 
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

public class EncodeUtils {

    public static void main(String[] args){
        String str="123";
        Long a=1L;
        int b =a instanceof Long?1:2;
        System.out.println(b);
        if(str instanceof String){
            System.out.println(str);
        }
        if(a instanceof Long){
            System.out.println(a);
        }

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果如下: 
这里写图片描述

======================================================

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

instanceof关键字的作用是判断一个对象是否是一个具体类的实例,我们在重写equals方法中要先判断是否是同一对象,之后再判断一个对象是否是另一个的实例,如果是判断各个属性值以判断是否是同一对象,不是一定不是同一对象。

下面是String中equals的方法源码:


也是先判断是否为同一对象,利用instanceof关键字判断是否是String的实例(任何字符串都是String的实例),如不是对字符串中每个字符进行比较

下面是instanceof的简单举例:

 
  1. package dmeo_1;

  2.  
  3. public class Student extends Person{

  4.  
  5. public static void main(String[] args) {

  6.  
  7. if ("a" instanceof String) {

  8. //所有的字符串都是String的实例

  9. System.out.println("字符串是Stringde实例");

  10. }

  11.  
  12. //只是声明了对象并没有创建,所以instanceof判断是false

  13. Student s1 = null;

  14. Student s2 = null;

  15. if (s1 instanceof Student) {

  16. System.out.println("s1是Student的实例");

  17. }

  18. if (s2 instanceof Student) {

  19. System.out.println("s2是Student的实例");

  20. }

  21.  
  22. //创建了对象实例,判断为true

  23. s1 = new Student();

  24. s2 = new Student();

  25. if (s1 instanceof Student) {

  26. System.out.println("s1是Student的实例");

  27. }

  28. if (s2 instanceof Student) {

  29. System.out.println("s2是Student的实例");

  30. }

  31.  
  32. /*任何类的父类都是Object类,可以这样理解,我们在创建子类对象的时候,

  33. 调用子类的构造方法时会默认调用父类无参的构造方法,其实是会创建父类的对象的,,有继承关系的可以判断出为true*/

  34. if (s1 instanceof Object) {

  35. System.out.println("s1是Object的实例");

  36. }

  37.  
  38. Object obj = new Student();

  39. if (obj instanceof Student) {

  40. System.out.println("obj是Student的实例");

  41. }

  42.  
  43. Student s3 = new Student();

  44. if (s3 instanceof Person) {

  45. System.out.println("s3是Student的父类Person的实例");

  46. }

  47. }

  48. }

  49.  
  50. class Person{

  51.  
  52. }


输出:

字符串是Stringde实例
s1是Student的实例
s2是Student的实例
s1是Object的实例
obj是Student的实例
s3是Student的父类Person的实例

猜你喜欢

转载自blog.csdn.net/qq_37273784/article/details/81382384