static关键字

static关键字详解

代码一:

package oop.demo01.demo08;

public class Student {
   public static int age;
   public double score;

   public void run(){

  }

   public static void go(){

  }

   public static void main(String[] args) {    //main静态方法
       Student student = new Student();
       System.out.println(Student.age);  //静态变量推荐使用类名.变量,很明显知道这是静态变量,静态变量对于这个类而言,在内存中只有一个,它能被类中的所有实例去共享。(多线程中会用到)
       //System.out.println(Student.score); //非静态的变量字段不能这么用
       System.out.println(student.age);
       System.out.println(student.score);   //用对象调用非静态属性

       Student s1 = new Student();
       s1.run();   //new Student().run(); 用对象调用非静态方法,非静态方法可以直接访问这个类里面的静态方法。因为静态方法跟类一起加载,一直存在,非静态方法就可以调用静态方法。
       Student.go();  //直接用类调用静态方法。run非静态方法可以调用go静态方法,反之不行,因为go静态方法先加载,加载顺序不同。
       go();  //因为在当前这个类里面,可以省略类
  }
}

代码二:

package oop.demo01.demo08;

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 person = new Person();
       System.out.println("============");
       Person person1 = new Person();
  }

}

代码三:

package oop.demo01.demo08;
//静态导入包:
import static java.lang.Math.PI;
import static java.lang.Math.random;
public class Test {
   public static void main(String[] args) {
       System.out.println(Math.random());  //将import static java.lang.Math.random;包导入后,就不用写Math.,简单。
       System.out.println(random());
       System.out.println(PI);  //final是常量的修饰符,通过final修饰的类没有子类,不能被继承。
  }
}

 

posted @ 2021-02-02 20:52  爱罗翔的张三  阅读(45)  评论(0编辑  收藏  举报