static关键字的四种使⽤场景
static关键字主要有以下四种使⽤场景:
static修饰的变量1、修饰成员变量和成员⽅法
2、静态代码块
3、修饰类(只能修饰内部类)
4、静态导包(⽤来导⼊类中的静态资源,1.5之后的新特性)
修饰成员变量和成员⽅法(最常⽤)
被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调⽤调⽤格式:类名.静态变量名类名.静态⽅法名()
⽤public修饰的static成员变量和成员⽅法可以理解为全局变量和全局⽅法,当声明它为类的对象时,不⽣成static变量的副本,⽽是类的所有实例共享同⼀个static变量。static变量前可以有private修饰,表⽰这个变量只能在本类中使⽤,但是不能在其他类中通过类名来直接引⽤
静态⽅法中不能⽤this和super关键字,不能直接访问所属类的实例变量和实例⽅法,因为this和super是随着构造⽅法⽽出现,⽽静态优先于构造出现,所以静态只能访问静态,不能访问⾮静态,但是⾮静态可以访问静态。
⼀般在需要实现以下两个功能时推荐⽤static修饰:
1.表征类的属性或者被类中所有对象共享
2.⽅便资源调⽤
静态代码块:
1.静态代码块定义在类中⽅法外
2.静态代码块的格式是 static { 语句体; }
3.它优先于主⽅法执⾏、优先于构造代码块执⾏,当以任意形式第⼀次使⽤到该类时执⾏
4.该类不管创建多少对象,静态代码块只执⾏⼀次
⼀个类中的静态代码块可以有多个,位置可以随便放,它不在任何的⽅法体内,JVM加载类时会执⾏
这些静态的代码块,如果静态代码块有多个,JVM将按照它们在类中出现的先后顺序依次执⾏它们,每个代码块只会被执⾏⼀次。
静态内部类:
普通类是不允许声明为静态的,只有内部类才可以被static修饰的内部类可以直接作为⼀个普通类来使⽤,⽽不需实例⼀个外部类
静态导包:
格式为:import static
这两个关键字连⽤可以指定导⼊某个类中的指定静态资源,并且不需要使⽤类名调⽤类中静态成员,可以直接使⽤类中静态成员变量和成员⽅法。
import static java.lang.Math.*;
/** * 换成import static java.lang.Math.max;
具有⼀样的效果
*/
public class Demo { public static void main(String[] args) {
int max = max(1,2);
System.out.println(max);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论