Java中的static关键字
JAVA 关键字 static
2023-06-13 09:17:26 时间
关于Java中的Static关键字
Static关键字的解释
Static关键字,即静态关键字,他在Java中是一个修饰性的关键字,不仅仅可以用于修饰方法,也可以的修饰属性,也可以直接修饰代码块。通过他的修饰,原本的方法、属性或者是代码块就会变成静态的。
通过这样的解释,似乎真的是听君一席话,如听一席话。
下面我会进行详细的解释。
Static关键字带来的影响
众所周知,Java程序是运行在Java虚拟机中的,而虚拟机中有三个部分,栈、堆、和方法区。
在程序开始运行的时候,Java虚拟机首先会将main程序入栈,所使用的的基本数据类型被用于创建某个变量的时候,这个变量会被加载到栈中;当对定义的基本数据类型进行赋值的时候,Java虚拟机会在堆中开辟一个空间用于存放这个变量的值。而方法区则用于存放字节码文件。
由此可见,一般情况下程序在加载的时候,一个变量的生成,需要先去堆中去开辟空间再进行存值,当变量发生变化的时候,可能就需要重新进行加载,并指向新的位置。在使用的时候也需要在栈中先找到这个变量,再去读取堆中这个变量的值。
当添加了Static关键字后,所有被Static关键字修饰的都会在程序初始化的时候在方法区内进行加载,并且只加载一次。变量需要改变或者使用的时候,可以直接去方法区内进行修改或者调用。相比于普通的调用方法,效率会更高。
Static关键字的具体使用
修饰方法
当Static用于修饰某个方法时,这个方法可以直接进行调用
如果这个方法没有static修饰,必须在这个方法所在的类中进行实例化之后才能进行调用
例如:
Thread.sleep(5000);//这里暂停5秒
//这里直接调用了sleep这个方法,之所以可以直接调用是因为他是被static修饰的
//这里展示了sleep的源码
public static native void sleep(long millis) throws InterruptedException;
属性修饰
当Static用于修饰一个属性的时候,这个属性随着类的加载而加载,存放在方法区内,且仅被加载一次
private static String name;
//这样使用static修饰的变量,叫做静态变量,会随着类的加载而加载,存放的地址是方法区,并且只加载一次
静态代码块
使用Static加载一块代码,这块代码也会类似于被Static修饰的变量,随着类的加载而加载,在程序最开始的时候就会被执行,且只被加载一次。
static {
System.out.println("我是静态代码块中的内容");
}
//这个会随着类的加载而加载,即在整个程序的最开始的时候进行执行。而且只加载一次就可以,不管其出现在什么地方
相关文章
- java中static关键字的作用_java中static关键字的作用
- java启动器_JAVA基础:Java 启动器如何查找类
- java session id 生成_Java通过sessionId获取Session「建议收藏」
- 【说站】java中BigDecimal有哪些用法
- java——异常时try catch finally的用法 出现异常之后典型的处理方式
- java反射 getMethod_JAVA 反射 getMethod() 和 invoke() 具体应用[通俗易懂]
- java 设置400错误_Java项目报400错误的原因与解决方法
- Spring+Spring MVC+MyBatis_java的图书管理系统
- java 仓库管理系统源码[通俗易懂]
- C++和Java中static关键字的比较
- java查找字符的方法_Java字符串查找(3种方法)
- 为了避免内存攻击,美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift,但将 C 和 C++ 置于一边
- IDEA打开导入别人的java项目后不能运行的解决方法
- 将图片转成base64字符串并在JSP页面显示的Java代码详解编程语言
- Java学习笔记之一java关键字及作用详解编程语言
- java关键字之static详细学习详解编程语言
- Java中的关键字 transient详解编程语言
- JAVA文件转换为Base64详解编程语言
- 数据库实现Java程序与Oracle数据库的连接(java链接oracle)
- 程序Linux命令调用Java程序实现交互(linux命令java)
- 数据处理使用Java处理Redis中过期数据(redisjava过期)
- Java文件在Linux系统中的使用(java文件linux)
- 构建基于Java和Oracle的强大技术栈(java架构oracle)
- Java中new关键字和newInstance方法的区别分享
- JAVA算法起步之快速排序实例