java中的static详解

static

static修饰的属性调用的区别

package Demo04;

public class Student extends Person {
  public static int age;//静态属性
  public String name;//非静态属性

   public static void main(String[] args) {
       Student student=new Student();
       //静态和非静态属性都可以通过new一个对象进行调用
       System.out.println(student.name);
       System.out.println(student.age);
       //静态方法可以通过类直接调用
       System.out.println(Student.age);
       //因为在此类中甚至可以直接省略类
       System.out.println(age);
  }
}

static修饰的方法调用的区别

package Demo04;

public class Student extends Person {
  public static void go(){//静态方法
      System.out.println("go");
  }
  public void run(){//非静态方法
      System.out.println("run");
  }

   public static void main(String[] args) {
  Student student = new Student();
  //静态和非静态方法都可以通过对象来调用
  student.go();
  student.run();
  //静态方法的调用与静态属性的调用类似
       Student.go();//通过类来调用
       go();//因为在此类中直接调用

  }
    /*
   静态方法只能调用静态方法
   非静态方法都可以调用
    */
}

代码块

package Demo04;

public class Teacher extends Person{
  {//第二个加载
       System.out.println("匿名代码块");
  }
   static {//第一个加载且只加载一次
       System.out.println("静态代码块");
  }

   public Teacher() {//最后加载
       System.out.println("无参构造");
  }

   public static void main(String[] args) {
       Teacher teacher = new Teacher();
       System.out.println("================");
       Teacher teacher2 = new Teacher();


  }
}

静态导入包

package Demo04;
//静态导入包
import static java.lang.Math.random;
public class Teacher extends Person{


   public static void main(String[] args) {
       System.out.println(random());
       //加入静态导入包导入的方法后,可以直接调用方法
       //不用写Math.random()了,但是调用其他的Math的方法还是需要调用


  }
}

 

posted @ 2021-03-16 19:43  默默努力的路人甲  阅读(86)  评论(0)    收藏  举报