一语点破 Java 中的静态 static 关键字
来源 | blog.csdn.net/ju_362204801/article/details/90738966
思考:大家有没有想过一个问题,静态它为什么叫静态?因为书上或者别的文章里这么写的都这么叫的?所以也跟着这么叫??????
1,模拟分析理解静态
那今天咱们就分析分析,搞定它!
为了解决上边的问题,咱们再引发一个问题:有静肯定就有动啊,那这个“静”是相对于谁来说的?
要讲明白这个,首先需要知道Java中类和对象之间的关系
类是对某些类具有共同特征的事物的抽象,对象是根据类产生出的具体实例。
请注意:这里说的共同特征是指具有共同的属性(长度)和共同的行为(方法),绝对不是指这些物体的数据都相同
举个例子:张三和李四都属于学生。这里的张三,李四就是具体的实例对象;学生就是一个抽象出来的具有共同特征的事物,学生某种事物都有共有班级,姓名,年龄,性别等属性,所以学生是个类。
但是张三这个具体的实例对象,他的班级是1班,姓名是张三,年龄是18岁,性别是男;
李四这个具体的实例对象,她的班级是2班,姓名是李四,年龄是18岁,性别是女。
这里的1班2班,18岁,男,女都是具体对象的具体数据,这些数据是转换张三,李四等这些不同实例对象的变化而变化的,是对象存储的,这就是上边说的相对于静来说的那个动
那什么是静呢?说完了动,静就很简单了,静就是不转移对象的变化而变化,是某种物体共有的数据,注意标红的几个字,从而这些静的数据的是通过类存储的,不是通过对象变得
所以静态变量又称为“类变量”,非静态的变量又称为“实例变量”
继续上边的示例,学生类再加个分段国家,假设我们只讨论中国范围内,那么国家这个分区就可以定义成静态的,因为张三,李四已以及他所有的学生对象,他们国家都是中国,“中国”这个值学生类的所有对象共有的
静态的就是类共有的。静就是大家(类)都有的共有的,是相对于通过对象变化而变化的“动”而言的
呜啦啦的说了那么多是为了帮助大家更容易的去理解。
总之简单粗暴的一句话:静态的是继承类的,非静态是继承对象的
那具体什么时候可以使用静态呢?
2,什么时候可以使用静态?
因为静态修饰的内容有成员变量和成员方法,所以回答这个问题得从两方面入手
什么时候可以定义静态变量?
当类别中出现所有对象都共有的数据时,该分区就可以定义成静态的。有时刚才说的学生类别里的国家这个分区就可以定义成静态的。
什么时候可以定义静态方法?
当方法内部没有使用到非静态数据(对象的特有数据)时,那么该方法就可以定义成静态的
大家平常到的工具类XxxUtils就很符合上边的场景,所以大家见到的工具类基本上都是静态的,不用new对象,直接XxxUtils.xxx()调用
3,静态的其他内容理解
理解了上述内容后,下边的内容就不难理解了
静态:static关键字
static关键字的用法:它是一个修饰符,用于修饰成员(成员变量,成员方法)
静态的特点:
1,通过类的加载而加载(就是说这个类一被加载进内存,静态的东西就可以加载进去了,这时候对象还不存在呢)
2,静态先于对象存在
3,被所有的对象共享
4,可以直接被类名调用,也可以被对象调用
静态使用的注意事项:
1,静态方法只能访问静态成员(属性和方法),不能访问非静态成员。因为静态在的时候非静态的还没在呢
2,非静态方法可以访问静态成员,也可以访问非静态成员
3,因为静态先于对象的存在而存在,所以静态方法中不可以出现this,super关键字。
静态的利弊:
1,利:对于所有对象都共有的数据,没必要每个对象中都存在一份,可以使用静态,节省空间;可以不新建对象,直接用类名调用
2,缺点:因为静态是通过类存在的,所以生命周期过长;访问出现局限性,只能访问静态
静态和非静态的数据在内存中的存储也有所不同,下篇会接着讲一下它们在内存中是怎么存的,以及实例化一个对象具体都做了些啥
以上就是本人对java中静态的一些理解和总结,若有不对的地方,欢迎留言指出,一起学习进步
DD自研的沪牌代拍业务,点击直达
往期推荐
Mysql 都会遭受哪些方面的攻击?
你了解 Java 的 jstat 命令吗?
Git 提交代码之后的几种后悔药
为什么大多数IOC容器使用ApplicationContext,而不用BeanFactory
JIRA、Confluence等产品明年2月停售本地化版本,将影响中国近90%的客户!
妙用 Intellij IDEA 创建临时文件,Git 跟踪不到的那种
扫一扫,关注我
一起学习,一起进步
每周赠书,福利不断
﹀
﹀
﹀
深度内容
推荐加入
一语点破 Java 中的静态 static 关键字相关推荐
- 一语点破Java中的静态static关键字
作者:嗑嗑磕嗑瓜子的猫 blog.csdn.net/ju_362204801/article/details/90738966 思考:大家有没有想过一个问题,静态它为什么叫静态?因为书上或者别的文章里 ...
- 大白话系列之 —— 一语点破Java中的静态static关键字
铁子们,快扫码关注啦!或 wx搜索:"聊5毛钱的java",关注可领取博主的Java学习视频+资料,保证都是干货 思考:大家有没有想过一个问题,静态它为什么叫静态?因为书上或者别的 ...
- Java学习(静态static关键字,数组工具类Arrays,数学相关工具类(绝对值,向上取整,向下取整),继承,super和this关键字,抽象)
2022/1/2 (1/6)Java学习 1.静态Static关键字概述 一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份. 2.静态stat ...
- 【java笔记】静态static关键字
目录 static 修饰成员变量: static修饰成员方法: 注意: 静态static的内存图: 静态代码块: 一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的. 多个对象 ...
- Java中final、static关键字的作用
final关键字可用于三个地方: 用于修饰类.类属性和类方法. 被final修饰的类不能被继承,被final修饰的类属性和类方法不能被覆盖(重写): 一.final 1. final修饰变量: fin ...
- Java讲课笔记12:static关键字
文章目录 零.本讲学习目标 1.掌握静态变量的使用 2.掌握静态方法的使用 3.掌握静态代码块的使用 一.static关键字的用处 二.静态变量 1.静态变量的定义 2.静态变量的内存分配示意图 3. ...
- java中的静态变量的作用域_详解JAVA中static的作用
1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...
- java中的静态是什么?怎么用?
Java属于入门容易,天花板却极高的编程语言.java中的静态是什么?对于java工程师来说技术的不断发展,需要不断学习java进阶知识.为了帮助大家巩固基础,本文解答了java中的静态是什么?怎么用 ...
- 非静态方法可以访问Java中的静态变量/方法吗?
"非静态方法可以访问静态变量或调用静态方法"是Java中有关静态修饰符的常见问题之一,答案是, 是的 ,非静态方法可以访问静态变量或调用静态方法. Java中的方法. 这没有问题, ...
最新文章
- Android第二十五期 - 猜歌小游戏
- Python剑指offer:数组中重复的数字
- java每秒限流_java限流工具类
- CentOS下安装VirtualEnv的教程
- flex 修改生成html,CSS Flex –动画教程
- python规模大小的指标是_训练数据多少才够用
- oracle安全性规则,[ORACLE ]安全性
- 博途数据类型wstring怎么用_解析博图数据块(昆仑通态触摸屏自动命名)
- Python基石 - 收藏集 - 掘金
- dos2unix离线安装
- UDS协议(车辆控制单元诊断系统开发架构及DID读取数据流程)
- 数字供销方案、供销社数字化、信息化
- 如何在谷歌地图自定义范围_如何在Google地图中创建自定义地图
- JVM调优命令-jstat
- DOS死机客星,能打破程序死循环,按住Ctrl +Esc即可使死掉的程序立即返回到Dos Shell
- oracle 转换为double,Oracle中的类型转换 (转)
- jieba textrank关键词提取 python_五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg,THULAC, HanLP...
- docker安装python依赖包
- Sqlserver数据库显示(正在恢复)
- buuctf misc 弱口令
热门文章
- 偏移量详解-源自csna 菜鸟飞人
- python3 报错 ‘builtin_function_or_method‘ object has no attribute 解决方法
- GSS-API GSSAPI 介绍 通用的安全机制
- linux 制作deb包的三种方法
- python 多进程异常处理
- android cmd adb命令安装和删除apk应用
- Duilib技巧:背景图片平铺
- #include Windows.h 和 Winsock2.h冲突的改进解决方案
- Linux 文件系统的目录结构
- ruby gem 本地安装方法