package com.xuyifan.demo09; /** * @author xyf * @create 2020-08-17-11:17 */ public class Application { private static int a; //静态的变量 private double score;//非静态的变量 public void run(){
go();//非静态方法可以调用静态方法,但是静态方法只能调用静态的方法
}//非静态的方法 public static void go(){}//静态的方法 public static void main(String[] args) { System.out.println(a);//静态的变量可以直接用 go();//静态的方法可以直接用 Student.gogogo();//类中的静态方法也可以直接调用 System.out.println(Student.ID);//类中的静态变量也可以调用 Application application=new Application(); application.score=10;//非静态变量需要靠引用操作 application.run();//非静态方法需要靠对象的引用调用 Student student=new Student(); System.out.println(student.newid);// student.laugh(); } }
package com.xuyifan.demo09; /** * @author xyf * @create 2020-08-17-11:20 */ public class Student { static void gogogo(){} public static double ID=101; public void laugh(){} public double newid=102; /** * * @param args public static void main(String[] args) { Application.go(); } */ }
复习可以参照 java中的内存
static修饰的内容与类一起加载到方法区,所以无需实例化也可以使用
静态代码块与匿名代码块
package com.xuyifan.demo09; /** * @author xyf * @create 2020-08-17-13:14 */ 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(); } }
输出
静态代码块 匿名代码块 构造函数 ===================== 匿名代码块 构造函数
静态代码块只会执行一次
执行顺序:静态代码块--------》匿名代码块-----------》构造函数
因为静态代码只会执行一次,所以创建第二个对象时就不会执行静态代码块
JAVA新特性:静态导入包
import static java.lang.Math.PI;
就可以直接使用PI调用而不是用Math.PI
原文:https://www.cnblogs.com/happyxyf/p/13517093.html