一、static
1、static修饰的成员变量
在一个类中,非静态成员变量对每一个对象都会有一个特定的值,在初始化非静态变量的时候是不分配内存的,只有创立对象后才会分配,而且不同对象之间的同名非静态变量是可以不同的;而用static修饰的变量,一个类的所有对象都共享这个属性,如果不加final修饰词的时候,当一个对象对static变量修改的时候,这个类的所有对象的这个属性都会改变
例01:
Animal(){}
}
public static void main(String[] args) {
Animal dog=new Animal();
dog.ee=9;
System.out.println(Animal.ee);
}
}
① static修饰的方法称为静态方法,类比静态变量,静态方法是一个类的所有变量共有的,其他类调用静态方法时只需要用“类名.方法名”的方式来调用
②static方法内部只能访问类的static属性,不能访问类的非static属性。
③因为不需要实例就可以访问static方法,因此static方法内部不能有this,也不能有super;
例02:
Animal(){}
System.out.println("I can eat.");
}
}
public static void main(String[] args) {
Animal dog=new Animal();
dog.eat();
Animal.eat();
}
I can eat.
可以看出,是否通过对象调用static方法是没有什么区别的
如final PI=3.14;
public final class Test{
public static inttotalNumber= 5 ;
public final int id;
public Test(){
id = ++totalNumber;//在构造方法中给final变量赋值
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.id);
final int i = 10;
final int j;
j = 20;
j = 30; //非法,final只能初始化一次
}
}