前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中的static关键字

Java中的static关键字

作者头像
星陨1357
发布2023-03-14 17:15:08
3190
发布2023-03-14 17:15:08
举报

关于Java中的Static关键字

Static关键字的解释

Static关键字,即静态关键字,他在Java中是一个修饰性的关键字,不仅仅可以用于修饰方法,也可以的修饰属性,也可以直接修饰代码块。通过他的修饰,原本的方法、属性或者是代码块就会变成静态的。

通过这样的解释,似乎真的是听君一席话,如听一席话。

下面我会进行详细的解释。

Static关键字带来的影响

众所周知,Java程序是运行在Java虚拟机中的,而虚拟机中有三个部分,栈、堆、和方法区。

在程序开始运行的时候,Java虚拟机首先会将main程序入栈,所使用的的基本数据类型被用于创建某个变量的时候,这个变量会被加载到栈中;当对定义的基本数据类型进行赋值的时候,Java虚拟机会在堆中开辟一个空间用于存放这个变量的值。而方法区则用于存放字节码文件。

由此可见,一般情况下程序在加载的时候,一个变量的生成,需要先去堆中去开辟空间再进行存值,当变量发生变化的时候,可能就需要重新进行加载,并指向新的位置。在使用的时候也需要在栈中先找到这个变量,再去读取堆中这个变量的值。

当添加了Static关键字后,所有被Static关键字修饰的都会在程序初始化的时候在方法区内进行加载,并且只加载一次。变量需要改变或者使用的时候,可以直接去方法区内进行修改或者调用。相比于普通的调用方法,效率会更高。

Static关键字的具体使用

修饰方法

当Static用于修饰某个方法时,这个方法可以直接进行调用

如果这个方法没有static修饰,必须在这个方法所在的类中进行实例化之后才能进行调用

例如:

代码语言:javascript
复制
Thread.sleep(5000);//这里暂停5秒

//这里直接调用了sleep这个方法,之所以可以直接调用是因为他是被static修饰的
//这里展示了sleep的源码
public static native void sleep(long millis) throws InterruptedException;

属性修饰

当Static用于修饰一个属性的时候,这个属性随着类的加载而加载,存放在方法区内,且仅被加载一次

代码语言:javascript
复制
private static String name;
//这样使用static修饰的变量,叫做静态变量,会随着类的加载而加载,存放的地址是方法区,并且只加载一次

静态代码块

使用Static加载一块代码,这块代码也会类似于被Static修饰的变量,随着类的加载而加载,在程序最开始的时候就会被执行,且只被加载一次。

代码语言:javascript
复制
static {
    System.out.println("我是静态代码块中的内容");
}
//这个会随着类的加载而加载,即在整个程序的最开始的时候进行执行。而且只加载一次就可以,不管其出现在什么地方
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于Java中的Static关键字
  • Static关键字的解释
  • Static关键字带来的影响
  • Static关键字的具体使用
    • 修饰方法
      • 属性修饰
        • 静态代码块
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档