news 2026/6/25 0:45:13

理解Java核心概念:类型转换、instanceof检查与静态成员

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
理解Java核心概念:类型转换、instanceof检查与静态成员

类型转换

Java中有普通数据类型和引用数据类型:

普通数据类型,有byte、short、char、int、long、float、double、boolean。普通数据类型,是指内存中的"框"存储的二进制是数据本身。

引用数据类型,有数组、对象。引用数据类型,是指内存中的“框”存储的是内存地址,即“引用”。真正的数据,存储在引用的在“堆”里的内存地址的“框”里。

普通数据类型,可以“从低到高”进行隐式的自动转换,或者“从高到低”进行显示的类型转换。因为“从低到高”,不会存在数据丢失问题,而“从高到低”存在数据丢失和精度降低风险。

从低--------------------------------------到高
byte -> short / char -> int -> long -> float -> double

bytea=127;intb=a;// 从低到高,可以隐式转换shortc=(short)b;// 从高到低,必须显示转换

引用数据类型也可以进行数据转换,比如子类、父类进行类型转换。引用类型“从低到高”时,可以进行隐式的类型转换,即父类引用一个子类对象。比如:

Fathera=newSon();

而“从高到低”,需要进行显性的类型转换,因为可能存在一定的安全风险,比如:

SonzhangLiu=(Son)wangWu;

转型只能在继承关系的类之间进行,否则编译报错。

instanceof

instanceof是一个关键字,用于检查一个对象是否是一个类或者其子类的对象,用法为:

objectinstanceofType

这个语句返回值是一个布尔值,其中object为一个待检查的对象,Type为一个类。

publicclassApp{publicstaticvoidmain(String[]args){FatherzhangSan=newFather("张三");SonzhangSi=newSon("张四");if(zhangSiinstanceofSon){System.out.println("张三 instanceof Son");}else{System.out.println("张三 not instanceof Son");}if(zhangSaninstanceofFather){System.out.println("张三 instanceof Father");}else{System.out.println("张三 not instanceof Father");}if(zhangSaninstanceofObject){System.out.println("张三 instanceof Object");}else{System.out.println("张三 not instanceof Object");}}}
张三 instanceof Son 张三 instanceof Father 张三 instanceof Object 进程已结束,退出代码为0

static

static关键字用来修饰变量或方法,标记这个变量和方法是静态变量和静态方法。

什么是静态变量?静态变量又称为类变量,在类加载时就保存在内存中,可以用“类.变量”或“实例.变量”进行访问。

什么是静态方法?静态方法又称为类方法,在类加载时就保存在内存中,可以用“类.方法”或“实例.方法”进行调用。

publicclassApp{// 定义演示用的子类privatestaticclassDemoClass{staticvoidsayHello(){System.out.println("hello");}staticintnum=10;}publicstaticvoidmain(String[]args){DemoClassd=newDemoClass();System.out.println(DemoClass.num);// 10 通过类名, 访问静态变量System.out.println(d.num);// 10 通过实例名, 访问静态变量DemoClass.sayHello();// hello 通过类名, 访问静态方法d.sayHello();// hello 通过实例名, 访问静态方法}}

静态变量和静态方法虽然可以通过实例访问,但是强烈建议通过类进行访问,这样更清晰的说明这个是类的变量或方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 15:30:10

Blender 贝塞尔曲线终极操作指南:全面掌握曲线编辑技巧

Blender 贝塞尔曲线终极操作指南:全面掌握曲线编辑技巧 【免费下载链接】blenderbezierutils 项目地址: https://gitcode.com/gh_mirrors/bl/blenderbezierutils 想要在 Blender 中轻松驾驭贝塞尔曲线吗?这款强大的插件将彻底改变你的工作流程&a…

作者头像 李华
网站建设 2026/6/25 1:37:48

大数据架构演进:数据网格(Data Mesh)核心概念解析

大数据架构演进:数据网格(Data Mesh)核心概念解析 关键词:大数据架构、数据网格(Data Mesh)、领域自治、数据产品、自助服务、全局治理、架构演进 摘要:本文从传统大数据架构的痛点出发,结合生活场景类比,系统解析数据…

作者头像 李华
网站建设 2026/6/25 21:29:00

如何在16GB内存设备上部署GPT-OSS-20B?清华源镜像加速下载实战

如何在16GB内存设备上部署GPT-OSS-20B?清华源镜像加速下载实战 你有没有遇到过这样的场景:想本地跑一个大模型做实验,结果光是下载权重就卡了整整一夜,最后还断了线?更别提加载时显存爆满、系统卡死的尴尬。这几乎是每…

作者头像 李华
网站建设 2026/6/25 2:07:12

函数的练习

编写一个主函数以及四个函数max(a, n)、min(a, n)、aver(a, n)和prime(m)。要求是:函数max(a, n)、min(a, n)和aver(a, n)分别求出含有n个元素的数组a中的最大值、最小值和平均值,并返回结果到主调函数。函数prime(m)要求对m是否为素数进行判断&#xff…

作者头像 李华
网站建设 2026/6/24 13:56:19

LSTM网络在旋律延续中的表现:ACE-Step是如何做到连贯性的?

LSTM网络在旋律延续中的表现:ACE-Step是如何做到连贯性的? 在AI音乐创作领域,一个长期困扰研究者的问题是:如何让机器生成的旋律听起来“自然”? 我们经常能听到AI作曲的作品——开头几句或许悦耳动听,但到…

作者头像 李华
网站建设 2026/6/24 13:54:18

回溯

lclc2121hash抽象分组后前缀和注意 这个地方的下标个数统计要-1...(ll)b[i] * (m - i-1); class Solution {typedef long long ll;public:vector<long long> getDistances(vector<int>& arr) {int narr.size();vector<ll> ret(n);unordered_map<int,v…

作者头像 李华