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);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_41050155/article/details/82870806