java static 性能_Java关键字之static的典型用法分析

static关键字是java中非常重要的一个关键字,用的好的话可以提高程序的运行性能,优化程序结构。接下来我们来总结

一下static关键字及其用法。

1.static变量

static变量也称作静态变量,静态变量为所属类的成员所共享,静态变量只会有一份,而不是每个实例都有自己的一份。

在静态方法中和非静态方法中都可以直接引用静态变量,而非静态变量则不可能在静态方法中直接引用,比如我们最常见的

main()方法,我们来看一下以下的code:

packagecom.ab.main;/***@author**/

public classStaticTest {private int m = 0;private static int Count = 0;publicStaticTest() {

Count++;

}/***@paramargs*/

public static voidmain(String[] args) {

System.out.println("Count: "+Count);//System.out.println("m value is: "+m);//error:不能对非静态字段 m 进行静态引用

StaticTest Static1= newStaticTest();

System.out.println("这是第"+Static1.Count+"次初始化");

StaticTest Static2= newStaticTest();

System.out.println("这是第"+Static2.Count+"次初始化");

Static1.testStatic1();

testStatic2();

}public voidtestStatic1(){

System.out.println("m value is: "+m);

System.out.println("count value is: "+Count);

}public static voidtestStatic2(){//System.out.println("m value is: "+m);//error:不能对非静态字段 m 进行静态引用

System.out.println("count value is: "+Count);

}

}

其中在静态的main()方法中可以直接引用静态变量Count,但是不能引用非静态变量m,要不然会报error:

不能对非静态字段 m 进行静态引用

静态变量每个类一个,而实例变量为每个对象一个,静态变量可以节约内存。

静态变量是在类被加载的时初始化,如以上代码所示,Count只在加载时候初始化一次,new对象后Count加1,

再次new对象的时候,Count不在初始化,就在1的基础上再加1变为2,以上代码的count部分输出为:

这是第1次初始化

这是第2次初始化

而如果把private static int Count = 0;改为private int Count = 0;的话输出结果为:

这是第1次初始化

这是第1次初始化

每次new的时候重新初始化为0,然后再加1

此外还有一个常用的用法是和final配合使用,比如public static final double PI = 3.141592653589793;

我们知道final变量代表你不能改变它的值,就是常数的定义,一般都是大写字母。

2.static方法

静态的方法可以直接调用而不需要堆上的实例,也就是可以直接用类的名称调用,而不是用对象引用变量,比如在

最常见的入口函数main()就是典型的public static void main(String[] args)静态方法,如果还有定义为static

的方法,比如code中的public static void testStatic2()我们就可以在main中直接testStatic2();调用,而要

调用public void testStatic1()这个非静态方法的话,则需要new一个实例出来StaticTest Static1 = new StaticTest();

静态方法不能直接存取非静态的变量,可以直接调用静态变量

3.static代码块

static还有一个作用就是用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,

类中可以有多个static块。

在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。

4.static import

这是Java 5.0的新功能,import static ...之后调用的时候直接使用方法名调用,就好像是该类自己的方法一样。

总结

static是java中非常重要的一个关键字,主要有四种用法:

用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;

用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用;

静态块用法,将多个类成员放在一起初始化;

静态导包用法,将类的方法直接导入到当前类中,更加方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值