static关键字
Person类
package com.tiedandan.oop.Static关键字;
public class Person {
//匿名代码块,一般用于赋初值,在构造方法被执行前执行
{
System.out.println("匿名代码块先执行");
}
//静态代码块,只执行一次
static{
System.out.println("静态代码块");
}
public Person(){
System.out.println("person构造方法先执行");
}
public static void run(){
System.out.println("runrun");
}
}
测试类:
package com.tiedandan.oop.Static关键字;
import java.sql.SQLOutput;
public class application {
//静态变量
public static int age;
//非静态变量
public int score;
//静态方法
public static void print(){
System.out.println("runrun");
}
//普通方法
public void print2(){
System.out.println("run");
}
public static void main(String[] args) {
application a1 = new application();
System.out.println(application.age);//静态变量可以直接被静态变量所在的当前类调用。
System.out.println(a1.score);//普通变量只能通过对象调用.
System.out.println(a1.age);//静态变量能被所有的实例共享。
application.print();//当前类调用当前对象。
a1.print();//当前实例调用当前静态方法
a1.print2();//对象调用创建对象的类的普通方法。
// application.print2();报错,当前类只能调用当前类中的静态方法和静态变量。
//总结:静态方法和静态变量只能在当前类中使用,不能被其他类调用。
//静态方法和变量能被当前类和当前类的所有实例调用。
//通过当前类只能调用当前类的静态方法和变量,调用普通方法和变量需要创建对象实例。
System.out.println("=======================================");
Person person = new Person();
person.run();
}
}