static
1.静态/非静态变量
eg:
private static int age; // 静态变量
private double score; //非静态变量
在调用age时,直接通过 类名.age 即可访问;
而score 必须通过创建对象来调用。
2.静态/非静态方法
eg:
//非静态方法
public void run(){
}
//静态方法
public static void go(){
}
同样,同类主函数调用go()时,可以通过 类名.go() go(),来进行调用方法,run方法则需要通过对象。
3.代码块
其中常见代码块有:匿名代码块,静态代码块,本地代码块,现就前两种以及构造方法进行阐述:
//2 赋初值
{
//代码块(匿名代码块)
System.out.println("匿名代码块");
}
//1
static {
//静态代码块 永久只执行一次
System.out.println("静态代码块");
}
//3
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("================");
Person person2 = new Person();
}
输出结果:
静态代码块
匿名代码块
==================
匿名代码块
构造方法
总结:
在创建对象后,上述两个代码块以及构造方法都会被调用,顺序为 静态代码块 > 匿名代码块 》 构造方法
静态代码块永久被调用1次,再次创建对象后不会被调用
4.静态导入包
当你觉得写下 Math.random() 多次很烦时,可以使用静态导入包:
//静态导入包
import static java.lang.Math.PI;
import static java.lang.Math.random;
public class Test {
public static void main(String[] args) {
System.out.println(random());
System.out.println(PI);
}
}
此时直接写random(),或者是PI即可。
5.题外话
当 final 修饰一个类之后,相当于做了一个结扎手术,他不能再拥有子类;
而这个类能继承其他类