问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中的static关键字说清楚还得靠JVM

发布网友 发布时间:2024-09-25 19:08

我来回答

1个回答

热心网友 时间:2024-09-29 20:18

前言

Java中Static想必大家一定使用过吧。他是用来修饰类或者成员变量或者方法的。

关于Static的用法还是很简单的,因为他就是一个修饰词。但是如果不理解他修饰的作用原理的话,可能会闹出bug来

变量

上图是一个简化的JVM内存结构模型。学习过JVM的都知道我们创建的对象正常情况下都是在堆中的。那么我们访问对象中的属性自然也就存放在堆中的。

但是当static修饰属性之后他就发生了变化了。

class Demo { //成员变量 public int num = 100; //静态成员变量 public static int count = 200; //静态方法 public static void method(){ System.out.println(count); } }

num属性属于常规属性,count属性属于静态变量。他们不仅仅是名称上的不同。从JVM的角度看他的存放位置也不同。

首先num依赖于具体的对象,所以他和对象存放在一起都是堆中。

而count独立于对象。JVM中专门有一块空间用于存放静态变量。这个空间我们叫做方法区。

方法

除了修饰变量外,static还可以修饰方法。被修饰的方法我们叫做静态方法 。静态方法的特点和静态变量一样都属于类而不是对象。静态方法内部只能访问静态变量而无法通过this对象进行访问对象属性。

总结下来就是静态方法内部只能访问静态变量无法访问非静态变量。

除了静态方法外,还有一个特殊的方法叫做静态代码块。这个方法不需要我们准备方法名,入参,出参等等。只需要准备方法体。关于方法体内部和静态方法内部要求是一样的。

关于静态代码块和静态方法他们和普通方法还有一个重要的区别就是执行时机。静态变量与普通变量的区别就是内存分布位置,而方法是在栈中操作的,不涉及内存的存储,所以区别就是方法执行的时机。这里需要我们提前了解点类加载机制。

首先我们一个类的加载分为五个过程。首先是加载class元信息,最后一步是进行初始化。至于前面三步我们这里可以不理解。重点知道在类加载的最后阶段会进行初始化,而初始化的操作就是执行静态方法和静态代码块。

从类加载过程中我们也能够看的出来静态方法是不依赖于对象的调用的。因为静态方法中只能使用到静态属性。也就是说静态属性使用时还没有创建对象。这也佐证了静态变量不依赖对象的说法。

总结

本文主要讲解Java基础,请原谅我没有华丽的词藻渲染出色的文章。虽然基础但往往是我们容易忽略的知识点。

只有不断的学习,才能不断的进步,关于static的进一步使用场景,目前我能想到的就是单例模式中会使用。

原文:https://juejin.cn/post/7103332427287756831
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宝宝被蜱虫叮咬后怎么办? 宝宝被蜱虫咬后该怎么办? 宝宝被蜱虫咬了,要怎么办啊? 宝宝被蜱虫咬了该怎么办? 携程旅行飞机票怎么退 携程旅行退机票手续费介绍 苹果七用ios10.0.01为什么打字 翻照片都炒鸡卡?刚刚买了几天 而且是1... 苹果7怎么老是感觉一顿一顿的 有没有人把苹果手机系统换成ios10之后,老死 QQ会员怎样成为VIP2 失恋后变得更好的星座是哪个 怎样在word里把页眉下的横线加粗word页眉下的横线怎么添加 谁有速8的会员卡在线等!怎么注册,谢谢 2021浙大分数线多少分? 无锡 垫资 注册一家100万公司,费用多少? 小米系统占用RAM太多了吧!3G RAM,系统占50%(小米4手机) 铝合金百叶窗有哪些优点 银美孚一号是全合成机油么?性能怎么样? vivoy5s有闪充功能吗 埋线双眼皮和全切双眼皮有哪些区别? 无锡金诺直投传媒有限公司怎么样? 最好用的会员管理软件,哪一款比较好用点的,推荐一个。然后如果有免费的... java中static关键字的作用 大话2的寻路call怎么找 火山分为哪几种类型 新蜀山剑侠马景涛版的主题曲叫什么名字? 运城102路最新运行时间,运城旅游公交路线 陶粒强度如何 带“小乔”的诗句大全 我想复制会员卡积分卡那样子的磁卡,不要求里面信息被复制,就是正反两面... 男孩像你讲的是什么? 无锡注册50万公司费用是多少 百叶窗的选购技巧 百叶窗的选购技巧和方法 成龙和张可颐有个私生子是真的吗? 一张省份证可以办几张网吧会员卡啊?在线等! 谁能推荐我一些具有古代武侠情长气息的歌曲啊 浙江大学海宁国际校区录取分数线多少? 无锡市嘉兴顺商贸有限公司怎么样? 铝合金百叶窗优点都有哪些 word页眉页脚下划线怎么加粗页眉页脚下面怎么加横线 Java中看到static int i;一个语句,请问static在这里的作用是什么啊? 无锡硕科信息技术有限公司怎么样? 男孩像你这首歌里的男孩像你是什么意思啊? 黄帝子孙的介绍 浙江大学海宁校区分数线2021是多少? 埋线法双眼皮优缺点 《男孩像你》的歌曲名称是什么? 公主小妹大结局播出时间 2台电脑一个猫一个交换机2个账号一方看电影会抢到另一方的网速... sovv薇薇瘦有副作用吗