一、静态变量、静态方法、非静态变量、非静态方法
- 静态方法可以直接使用静态变量和静态方法;
- 非静态方法可以直接使用静态变量、静态方法、非静态变量、非静态方法;
- 静态方法不能使用非静态变量、非静态方法。
package com.jacyzhu.oop.demo09;
// static
public class Student {
private static int age; // 静态变量 多线程!
private double score; // 非静态变量
public void run() {
go();
}
public static void go() {
System.out.println(age);
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age);
System.out.println(age);
System.out.println(s1.score);
s1.run();
Student.go();
go();
}
}
二、代码块、静态代码块、构造方法
- 执行顺序:静态代码块、代码块、构造方法
- 静态代码块只执行一次
package com.jacyzhu.oop.demo09;
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.random;
- import static java.lang.Math.PI;
package com.jacyzhu.oop.demo09;
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);
}
}
运行结果:
0.21107364067262757
3.141592653589793