static
-
static修饰变量(静态变量)
- 静态变量可以通过类名直接调用,也可以通过对象调用
- 非静态变量需要先 new 一个对象,然后通过对象调用
package cheng.oop.demo06; // static public class Student { private static int age;// 静态变量 private double score;// 非静态变量 public static void main(String[] args) { Student student = new Student(); // 静态变量调用 System.out.println(Student.age); System.out.println(student.age); // 非静态变量调用 System.out.println(student.score); } }
-
static修饰方法(静态方法)
- 静态方法可以通过类名直接调用
- 非静态变量需要先 new 一个对象,然后通过对象调用
代码示例:
package cheng.oop.demo06;
// static
public class Student {
// 非静态方法
public void run() {
}
// 静态方法
public static void eat() {
}
public static void main(String[] args) {
Student student = new Student();
// 通过对象调用
student.run();
// 通过类名调用,本类中还可以直接调用
Student.eat();
eat();
}
}
-
静态代码块 和 匿名代码块
-
静态代码块:和类一块儿加载,只执行一次
static { // 静态代码块 }
-
匿名代码块:
- 创建对象的时候,会先走匿名代码块
- 每创建一个对象执行一次
- 执行完匿名代码块,才会走构造方法
- 匿名代码块可以用来赋初始值
{ // 匿名代码块 }
-
代码示例:
package cheng.oop.demo06;
public class Person {
// 2、第2个执行,创建对象的时候,先走匿名代码块
// 可以用来赋初始值
{
System.out.println("匿名代码块");
}
// 1、最早执行,和类一块儿加载,只执行一次
static {
System.out.println("静态代码块");
}
// 3.第3个执行,走完匿名代码块,才走构造方法
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person = new Person();
System.out.println("==================");
Person person1 = new Person();
}
}
运行结果:
静态代码块
匿名代码块
构造方法
==================
匿名代码块
构造方法
-
静态导入包
通过静态方式导入包之后,可以直接使用包下的方法
代码示例:
package cheng.oop.demo06;
// 静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Test {
public static void main(String[] args) {
// 直接使用方法
System.out.println(random());// 随机数
System.out.println(PI);// PI
}
}