Static
Static详解
静态变量
package OOP02.Demon6;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.util.Scanner;
public class Student {
private static int age; //静态变量,他只有一个,故如果想要很多类去操纵他的时候,就会使用static,多线程会用到。
private double score;
public static void main(String[] args) {
System.out.println(Student.age);//通过类调用变量
/*
System.out.println(age);
*/
//System.out.println(Student.score); 则会报错,无法使用
double ss = new Student().score;//创建一个对象后
System.out.println(ss); //可调用
//===================================================================
//在Student s1 = new Student();创建了一个对象后:
System.out.println(s1.score);
System.out.println(s1.age);
//都可以正确实现功能
//====================================================================
}
}
总结:没有static,无法直接通过类来调用变量,需要创建一个对象才可以调用。有static则可以通过类直接调用。
静态方法
package OOP02.Demon6;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.util.Scanner;
public class Student {
public void run()
{go();}//非静态方法可以调用静态方法
//静态方法在这个类创建时就存在了,而非静态方法在这之后生成
public static void go(){}//静态方法无法调用非静态方法,原因同上。
public static void main(String[] args) {
new Student().run(); //非静态,需要创建对象才能使用
Student.go(); //静态
go(); //静态
}
}
总结:与变量同理。静态方法在类创建时就存在了,而非静态方法在之后生成,故:静态方法不能够调用非静态方法,非静态方法可以调用静态方法。
静态代码块
package OOP02.Demon6;
public class Person {
{
System.out.println("匿名代码块");
}//在构造器之前
//用于赋初始值,因为类一创建,他就产生了
//==================================================================匿名代码块
static {
System.out.println("静态代码块");
}//类一加载就执行,永久只执行一次
//==================================================================静态代码块
public Person() {
System.out.println("构造方法");
}
//==================================================================构造器
public static void main(String[] args) {
new Person(); //创建对象
System.out.println("=======");
new Person(); //第二次创建对象
}
/*
静态代码块
匿名代码块
构造方法
=======
匿名代码块
构造方法
*/
}
总结:
加载顺序为静态代码块 > 匿名代码块 > 构造器。
静态代码块在类一加载就加载了,永久只执行一次,故第二次创建对象时,没有打印出"静态代码块"
匿名代码块在构造器之前,故可以用来赋初始值
final
当一个类被final定义,就无法被其他类继承,称为final阉割法
静态导入包
在导入包时加入static修饰符,可以在类生成时一并加载static,在下面的阴影就不需要 包名.方法 了,直接使用 方法 就行。
浙公网安备 33010602011771号