[Java]Java中static的作用

“static”的中文翻译是“静态”,所以顾名思义,Java中用static修饰的变量或方法就叫静态变量或静态方法。

Java中用static修饰的变量或方法独立于该类的任何对象,也就是说,我们在调用的时候,不用依赖于某个实例,被该类的所有实例共享。

只要这个类被加载,JVM就可以根据类名在运行时数据区的方法区内找到他们,所以static对象可以在类被实例化之前就被访问到,不用依赖于某个实例化对象。

public修饰的static变量或方法本质上就是全局变量或全局方法,全局调用这个变量或方法的实例共享它。

private修饰的static变量或方法可以在本类中直接使用,而不能在其他类中使用,这个权限相关跟private有关,有空我会写篇文章专门总结private等修饰的权限问题。

static修饰的代码块在调用该类时JVM会直接运行该代码块,且只会被执行一次。利用静态代码块可以给静态变量赋值。

static修饰的变量我们称之为静态变量,在JVM加载类时只分配一次内存,起到了节省内存的作用,与之不同的实例变量则在JVM中会有多个拷贝,每次实例化调用的都是不同的拷贝,互不影响。static与final同时使用说明该变量是全局常量,只要赋值就不能更改。

static修饰的方法我们称之为静态方法,可以直接通过类名来调用,我们经常写的工具类就是通过静态方法来调用的。它不可以直接访问实例变量,只能访问static修饰的变量。因为static不依赖于实例,所以必须要实现该方法而不能是抽象的。

 

 

35VSGQgwAvkM5kDiKt9BWuowGYw3x8ooeV

发表评论

电子邮件地址不会被公开。 必填项已用*标注