首页 > 其他分享 >利用instanceof比较类、类之间的类型转换和Static

利用instanceof比较类、类之间的类型转换和Static

时间:2024-08-26 08:55:39浏览次数:8  
标签:instanceof 类型转换 Object object Person 实例 Static Student

instanceof

引用类型,类型转换

  • 判断某一个对象是不是某个类型的类的实例(有关系才能比较,否则会报错)

  • 能不能编译通过,取决于X与Y是否存在父子关系

例子:父类代表高类,子类代表低类

Object > Persion > Teacher

    Object object = new.Student();

    System.out.println(object instanceof Student);//true
    System.out.println(object instanceof Person);//true
    System.out.println(object instanceof Object);//true
    System.out.println(object instanceof Teacher);//false
    System.out.println(object instanceof String);//false
  • objectStudent 类的实例,所以 object instanceof Studenttrue
  • Student 类继承自 Person,所以 object instanceof Persontrue
  • Student 类间接继承自 Object(通过 Person 或直接),因此 object instanceof Objecttrue

这意味着 object 同时满足以下条件:

  • 它是 Student 类的实例。
  • 它也是 Person 类的实例,因为 Student 继承了 Person
  • 它也是 Object 类的实例,因为所有类都继承自 Object

关键在于等号右侧的内容,也就是通过 new 关键字创建的对象实例。这部分决定了对象的实际类型,instanceof 运算符的结果也是基于这个实际类型来判断的。

无论 object 被声明为哪种引用类型,instanceof 运算符总是根据 object 的实际类型(由 new 创建的类型)来进行判断。

类之间的类型转换

父类可以自动转化为子类,但不能调用子类独有的方法(即使父类的实际实例是子类),这时就需要强制类型转化

	Person student = new Student();
	Student st1 = new Student();
	Person person = st1;

子类转化为父类,可能会丢失自己本来的一些方法

Static

  • Static属性:所有类的实例对象以及类公用

  • Static方法:静态方法可以调用静态方法,非静态方法可以调用静态方法,但是静态方法不能调用非静态方法

静态代码块:在程序运行最开始只执行一次

static{
	//静态代码块
}

静态导入包

导入某一个方法

import static java.lang.Math.random;

通过 'final' 修饰的类无法被继承

标签:instanceof,类型转换,Object,object,Person,实例,Static,Student
From: https://www.cnblogs.com/LiuYP-blog/p/18379972

相关文章

  • C++:强制类型转换速通
    强制类型转换核心为四个cast类型分别是:static_castdynamic_castconst_castreinterpret_cast补充:转换是否安全首先,派生类内一定有基类。基类指针可以指向派生类如果将指向基类的指针指向派生类,派生类对象在内存中的布局通常会以基类部分的开头,派生类可以看做是对基类......
  • Java开发-面试题-0019-static 关键字平时用过吗,怎么用的,有什么好处,原理是什么
    更多内容欢迎关注我(持续更新中,欢迎Star✨)Github:CodeZeng1998/Java-Developer-Work-Note(技术)微信公众号:CodeZeng1998(生活)微信公众号:好锅其他平台:CodeZeng1998、好锅static关键字平时用过吗,怎么用的,有什么好处,原理是什么static修饰范围变量方法代码快内部类用法......
  • 一文讲清楚static关键字
    static能修饰的地方静态变量静态变量:又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它;静态变量在内存中只存在一份。实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。静态方法静态方法在类加载的时候就......
  • 【C++基础】static、const在类中的应用
    目录static一、修饰的变量或函数类型1.修饰全局变量2.修饰局部变量1.通过函数访问2.通过类的静态成员3.修饰函数4.修饰类中的成员二、在类中的应用场景1.共享数据(跨对象共享状态)2.单例模式3.工具类或辅助函数4.类级别的常量5.计数器或标识符生成器6......
  • Java之static静态代码块和方法
    文章目录一:static关键字二:静态变量三:静态方法四:静态代码块五:总结一:static关键字用于定义类级别的属性和方法,这些属性和方法属于类本身,而不是类的任何特定实例对象static修饰的方法或变量,优先于对象执行,所以内存会先有static修饰的内容,后有对象的内容static关键字......
  • Java数据类型转换
    自动类型转化(隐式转换):容量小的数据类型可以自动转换为容量大的数据类型。由低字节向高字节的转换byte->short->char–>int->long->float->double1.整行隐式类型转换:bytenum1=10;intnum2=num1;//byte转换为intshortnum3=1000;intnum4=num3;//short转换......
  • Java中的static关键字
    static可以用来修饰成员变量,也能修饰成员方法。1.1static修饰成员变量Java中的成员变量按照有无static修饰分为两种:类变量、实例变量。它们的区别如下图所示: 由于静态变量是属于类的,只需要通过类名就可以调用:类名.静态变量实例变量是属于对象的,需要通过对象才能调用:对......
  • Java基础——自学习使用(static关键字)
    一、static关键字是什么?static修饰的代码属于类,定义的变量存储在方法区的静态常量池当中二、static可以修饰什么1.static修饰变量static修饰的变量叫做类变量,被所有该类产生的对象所共享,存储在方法区的静态常量池中2.static修饰方法static修饰是的方法属于静态方法,stat......
  • Java基础--static关键字
    引言        在Java编程中,static关键字是一个非常重要的概念。它可以用于变量、方法、代码块。提供了在内存管理和代码结构上的独特优势,理解并正确使用static关键字是掌握Java编程的重要一步。static关键字是什么?    static关键字是Java中的一个修饰符,用于......
  • C++ 中几种类型转换
    C++中常用的类型除了隐式转换,还有显示转换,如:static_cast,dynamic_cast,const_cast,reinterpret_cast。其中隐式转换如常见的double、int、bool、float等类型之间的转换。显示转换的用法具体如下:一、static_cast:静态转换使用条件:(1)用于不同类型之间的转换,相当于隐式转换......