static修饰属性
public class Student {
private static int age;//静态的变量:静态的变量是和类一起加载的。
private double score;//非静态的变量
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age);//静态的变量可以直接用方法名调用
System.out.println(s1.age);
System.out.println(s1.score);
}
}
1、静态的变量是和类一起加载的
2、静态的变量可以直接用方法名调用
static修饰方法
public class Student {
//非静态方法
public void run(){
}
//静态方法
public static void go(){
}
public static void main(String[] args) {
new Student().run();//非静态方法需要通过对象来调用
go();//静态方法和类同时加载,可以直接调用
}
}
1、静态的方法和类同时加载,可以直接调用。
2、非静态的方法需要通过对象来调用。
静态代码块
public class Person {
//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();
}
}
输出:
静态代码块:类一加载就执行,而且永久只执行一次。
三者执行顺序是:静态代码块-->匿名代码块-->构造方法
静态导入包
//静态导入包
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);
}
}
静态导入包后,可以直接调用导入的方法。