当前位置: 首页 > 后端技术 > Java

java关键字static的使用详细介绍

时间:2023-04-01 20:09:53 Java

java关键字static的使用详细介绍大家好,我是科堂。在final关键字之后,今天介绍static关键字。static关键字表示静态。java中,修改变量(不能是局部变量,局部变量的生命周期随着方法的结束而结束,静态修饰是全局的),方法,构造静态代码块,修改类(内部类),jdk1.5如何使用后续的静态导入包(可读性差)?下面分别介绍一下。1.修饰变量static当变量被修饰时,也可以称为类变量或静态变量。与非静态修饰的实例变量不同,类变量属于类,为所有对象共享。实例变量属于对象,是对象私有的。怎么理解呢?jdk8之前,静态变量存放在永久层,jdk1.8之后,静态变量存放在堆中。在类加载阶段,静态变量已经生成并且是唯一的。例如,有一个Animal类,它具有静态变量名称和非静态变量权重。newa1和a2是两个Animal对象。它的变量归属如下图所示:也就是说,对象中的静态变量指向堆中的公共静态存储区。因此,静态变量与对象无关。可以使用类名.静态变量的方法直接调用静态变量。无论这个类中有多少个对象,都共享一个静态变量。2.修改方法静态修改方法类似于修改变量。其中,静态方法和实例方法只有一份,不管类有多少个对象,它们都共享一个方法。两者的区别如下:1.静态方法不需要创建对象,直接通过类名调用即可。方法。也可以通过对象的方法调用。方法,但是实例方法必须先创建对象,然后通过对象的方法调用。方法。2.静态方法中不能使用this关键字(this关键字与实例相关)。this关键字将在后面讨论。3.静态方法不能引用非静态变量。因为非静态变量是在创建对象的时候产生的,静态资源在类初始化的时候就已经存在了,所以无法识别。静态方法和实例方法都可以引用静态变量。3.静态代码块用static修饰的代码块是静态代码块,在类第一次加载时初始化(在链接阶段的准备阶段初始化)。静态代码块可以有多个,静态变量按照声明的顺序加载,并且只加载一次,先于其他非静态资源。您可以利用静态代码块仅加载一次这一事实来优化程序性能。该类在创建对象时需要执行比较大的配置文件,配置文件可以放在静态代码块中。**另外需要注意的是1.由于静态资源是按照声明的顺序加载的,如果静态变量放在代码块后面,然后代码块需要引用这个静态变量,就会报错报告**。2.静态代码块不能放在任何方法中,否则会报错。因为无论是类方法还是实例方法,都需要我们手动调用,类加载时加载静态资源。4.当修改一个类静态修改一个类时,这个类是一个静态内部类。静态内部类的主要作用是当外部类调用内部类时,不需要再创建另一个内部类,直接通过外部类名访问内部类。内部类名。比如线程池中的ThreadPoolExecutor中的CallerRunsPolicy、AbortPolicy、DiscardPolicy、DiscardOldestPolicy这四个拒绝策略就是静态内部类。5、静态包jdk1.5后,使用import静态包名代替import包名。这两个关键字的组合可以指定在类中导入指定的静态资源,不需要使用类名。资源名称,资源名称可以直接使用。例如://importstaticjava.util.Arrays;//注意这里的*表示导入Arrays类中的所有静态方法,也可以将*改成具体的方法名。导入静态java.util.Arrays.*;公共类A{publicstaticvoidmain(String[]args){int[]arrays={1,2,3,4,6,7,9,10};//数组排序(数组);sort(arrays);//可以不用类名直接调用}}但是这样只是减少了代码量,并没有提高性能,可读性差。一般测试时不建议使用,可以简化代码量使用。好了,静态关键字讲到这里就结束了,这里是科堂,我把自己的所学和收获分享出来,欢迎大家交流。csdn地址为:https://blog.csdn.net/kaneand...