静态变量和静态方法是类具有的属性,相当于是所有对象的共享内容,我们可以用static声明一个成员变量和成员方法,一旦被声明静态,那么通过这个类创建出来的所有对象,操作的都是同一个目标,也就是说哪怕对象再多,也只有这一个静态变量和静态方法,如果静态变量被一个对象改变,那么其他对象读取的都是被改变后的值;
public static void main(String[] args) { Student s1 = new Student(); s1.a=10; //对象s1改变了静态变量a的值 Student s2 = new Student(); System.out.println(s2.a); //对象s2读取的是被s1改变后的值 }
package tbw.Demo02; public class Student { static int a; }
被声明静态变量或者静态方法后不推荐使用对象来调用,可以直接用类目.xxx来使用
Student.a=20;
所有被标记静态的都会在类加载的时候分配,而不是等对象创建的时候再分配,所以所有的静态内容会在第一个对象初始化之前加载
public class Student { static int a=test(); static int test(){ return a; }
定义和赋值是两个过程,当定义a 的时候已经初始化了,当前a=0;由于有静态方法,先执行静态方法test,所以返回的a=0;此时a=0;所以输出a得到结果是0;