static关键字的作用

1、static修饰变量、方法

通常情况下,成员变量、方法都隶属于对象层级,也就是说每个对象都拥有独立的一份,若所有对象的某个特征都是一样的,则会造成内存空间的浪费,为了提高内存空间的利用率可以使用static关键字修饰成员变量、方法,表示静态的概念。此时该成员变量由对象层级提升为类层级,随着类的加载而准备就绪,被所有对象共享,与对象是否创建无关。
使用方式:
(1)使用类名.静态成员的方式进行访问。
(2)对于非静态的成员方法来说,既能访问非静态的成员,也能访问静态的成员。
(3)对于静态成员方法来说,只能访问静态成员,不能访问非静态成员。
(4)在Java语言中static关键字和final关键字很少单独修饰成员变量,通常都是采用public static final 共同修饰成员变量来表示常量的概念,该数值必须指定而且不能更改。通常的命名规范是:所有字母都要大写,不同单词之间采用下划线连接。

2、静态块

静态代码块中的代码在使用类的时候就已经执行了,所以可以应用静态代码块的这个特性来实现单例设计模式(这块在单例设计模式会讲到)。
在这里插入图片描述

3、静态内部类

静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。
在这里插入图片描述
访问静态内部类的方式为:Outter.Inner inner = new Outter.Inner();

4、静态导包

静态导包就是java包的静态导入,用import static代替import。静态导入包是JDK1.5中的新特性。

一般我们导入一个类都用 import com…ClassName;而静态导入是这样:import static com…ClassName.* ;这里的多了个static,还有就是类名ClassName后面多了个.* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名 的方式来调用。
在这里插入图片描述
如上图所示,左边是正常的写法,右边是使用静态导入,两段代码的运行结果是一样的。可以看出使用静态导包后,代码的确简化了,但也降低了可读性。如果对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值