java中static

java中static的使用

在学习Junit的时候,偶然发现了这个一个语句

    import static org.junit.Assert.*;

第一次看见这样子的static方法。让我赶快地翻了下书,也没怎么发现有类似的使用方法。之后找了些资料,顺便回顾下static的使用方法。

1. static变量

static修饰的变量估计大家都很熟悉了,就是静态变量(也叫类变量)。它是储存在公共的内存地址。在定义的时候就要进行初始化。如果某一动作对该变量进行了修改,那么在整一个类里面,这个值也会被修改。

2. static方法

static修饰的方法我们称为静态方法。比如我们最常见的静态方法就是main方法。

  • 静态方法不依赖于任何对象,因此就不能使用this和super了。
  • 静态方法只能调用静态方法和访问静态数据域,而不能直接调用实例方法和和访问实 例数据域。但是实例方法是可以调用静态方法的。当然如果要使用某个实例方法,可以通过创建对象来间接调用。

3. static代码块

static代码块也叫静态代码块,是随着类的加载一起执行的。位置可以位于该类的任何地方。static代码块最大的作用就是优化程序性能。因为它只会在类加载的时候执行一次。

这里顺便说下java父子类的代码块执行顺序

父类的静态代码块—>子类的静态代码块—>执行程序的main方法—>父类的非静态代码块—>父类的无参构造函数—>子类的非静态代码块—>子类的构造函数—>子类成员函数

很容易发现static代码块是最开始就执行的。

4.static导入

回到最开始的问题,import static org.junit.Assert.*的什么意思呢?
它就是所谓的静态导入。
静态导入提供了一种简洁的访问静态变量和静态方法。可以简化使用类的静态成员。可以在使用导入类的静态成员不用加类的前缀。
比如,在我们使用Math中静态变量PI的时候,我们通常都是如下使用的

    double area = Math.PI * r * r; 

但是当我们静态导入了Math包
那么我们就可以这么使用

    double area = PI * r * r;

导入语句就是: import static +包名
这种静态导入的方法,可以简化代码。但是不恰当的使用可能会降低代码的可读性和维护性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值