1 //static 2 public class staticDemo { 3 private static int age; //静态的变量 4 private double score; //非静态的变量 5 6 7 public static void main(String[] args) { 8 staticDemo a = new staticDemo(); 9 System.out.println(a.score); 10 System.out.println(a.age);//要先利用new关键字创建对象,然后再分别进行调用 age与score 11 System.out.println(staticDemo.age); //能够调用的原因是因为:字段里面含有static关键字,静态变量调用静态变量 12 System.out.println(staticDemo.score); //报错原因是因为:静态变量不能调用字段里面的非静态变量 13 // 1.有静态变量的推荐使用类名.方法———> eg:staticDemo.age 14 // 2.静态变量对于类,所有对象(实例)所共享,当直接使用类去调用得到说明这个变量是静态的 15 // 3.注意被final(final为常量修饰符)定义了,就不能被复制了继承,相当于没有后代了 16 }
1 public class staticDemo { 2 private static int age; //静态的变量,随着类一起加载而加载到内存中 3 private double score; //非静态的变量,随着对象的创建而加载到内存中 4 5 public void run(){ 6 go(); // 非静态方法可以调用静态方法里面的所有东西 7 } 8 public static void go(){ 9 // 静态方法只能调用静态方法里面的所有东西,而不能调用非静态方法。 10 } 11 public static void main(String[] args) { 12 new staticDemo().run(); // 必须new出这个对象再调用里面的方法,通过 对象.方法而来 13 staticDemo.go(); 14 go();// go方法中有static关键字所以可以直接写go方法,省略staticDemo类名
执行代码如下:
1 package com.chen.StaticDemo; 2 3 import static java.lang.Math.random; 4 import static java.lang.Math.PI; 5 6 public class Test { 7 public static void main(String[] args) { 8 // System.out.println(Math.random()); 没写之前需要Math.random() 9 System.out.println("random()"); //写了之和可以直接用random()原因是:import static java.lang.Math.random; 10 System.out.println(PI); 11 } 12 }
原文:https://www.cnblogs.com/chenti/p/14829214.html