static:
可修饰方法或属性。还可修饰包。(修饰包可以直接使用该包内的方法)
static修饰的方法或属性 在该类存在时就存在了。并且只会加载一次。之后每次运行都不会再重新运行加载。
静态属性(变量):
public class Student{
private static int age;// 静态变量
private String name;// 非静态变量
public static void main(String[] args) {
System.out.println(Student.age); // 调用静态变量
System.out.println(new Student().name);// 调用非静态变量
}
}
静态方法:
public class Student{
// 静态方法
public static void go(){
System.out.println("静态方法");
}
// 非静态方法
public void run(){
System.out.println("非静态方法");
}
public static void main(String[] args) {
go(); // 调用静态方法
new Student().run(); // 调用非静态方法
}
}
匿名代码块、静态代码块、构造器运行的运行先后顺序:
静态代码块(只运行加载一次)> 匿名代码块(可用于初始值) > 构造器
public class Student{
{
System.out.println("我是匿名代码块");
}
static {
System.out.println("我是静态代码块");
}
public Student() {
System.out.println("我是构造器");
}
public static void main(String[] args) {
new Student();
System.out.println("===========================");
new Student();
}
}
输出结果:
重复赘述:
类(class/对象)中的static可以直接调用,不用去new类(class/对象)。方法前加了static后可以不用再new就能直接使用。
加了static的方法是在该类存在的时候该方法就存在了,不加static就需要new。
拓展:final修饰的类将不能被继承