Java基础:static关键字
Java基础:static关键字
static变量(静态变量)
- 静态变量在第一次被访问时创建,在程序结束时销毁
- 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外
- 能在本类里直接调用
private static int age;//静态的变量
private double score;//非静态的变量
-
使用实例:
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(Student.score); //不可以直接通过类调用非静态的score System.out.println(s1.age); System.out.println(s1.score); //可以通过新建对象来调用age和score } }
static方法(静态方法)
- 能在本类里直接调用
//非静态方法
public void run() {
}
//静态方法
public static void go() {
}
-
使用实例:
//static public class Student { //非静态方法 public void run() { System.out.println("run"); } //静态方法 public static void go() { System.out.println("go"); } public static void main(String[] args) { go();//或者 Student.go(); new Student().run(); //可以通过新建对象来调用非静态的方法 } }
static代码块(静态代码块)
- 静态代码块是首先执行的代码块
- 静态代码块只执行一次
static {
//静态代码块
}
-
使用实例:
public class Person { //第二执行 { //代码块(匿名代码块):赋初始值 System.out.println("匿名代码块"); } //第一执行 static { //静态代码块:只执行一次 System.out.println("静态代码块"); } //第三执行 public Person() { System.out.println("构造方法"); } public static void main(String[] args) { Person person1 = new Person(); System.out.println("=========="); Person person2 = new Person(); } }
输出
静态代码块 匿名代码块 构造方法 ========== 匿名代码块 构造方法
static导入包(静态导入包)
- 在导入包前面加上 static 关键字,可以在类中直接使用导入包内的静态方法
import static java.lang.Math.*;
-
使用实例:
//静态导入包 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); } }
非静态导入包时
//非静态导入包 import java.lang.Math.PI; import java.lang.Math.random; public class Test { public static void main(String[] args) { System.out.println(Math.random());//需要写上调用类名才能调用 System.out.println(Math.PI); } }
好处:简化操作流程