1.静态成员变量
创建一个person类,将类中成员变量i定义成静态成员变量,使用关键词static。
class person {
static int i;
int j;
}
在另一个test类中调用静态成员变量可以直接由类名调用如1,也可以由对象调用如2。
class test{
public static void main(String args []){
person.i=10; ........1
person p1=new person();
p1.i=20; ........2
person p2=new person();
p2.j=30;
person p3=new person();
p3.j=40
}
}
对于普通成员变量j,引用p2,p3分别指向一个对象,修改一个对象的成员变量不会对另一个对象的成员变量有影响,修改p2.j的值对p3.j的值没有影响,对于静态的成员变量i,无论生成多少个对象,所有的对象共用一个成员变量i,修改i的值,所有的对象共用的成员变量都会发生变化,即p1.i,p2.i,p3.i的值是一样的,修改其中的一个值,其它成员变量的值相应改变。
2.静态成员函数
class person{
static int i;
int j;
static void fun(){
System.out.println("静态函数和静态变量"+i);
}
}
静态函数的定义使用关键词static,静态函数和静态变量都可以用类名来调用,无需生成对象。
静态函数中不能使用非静态的成员变量,在静态函数fun()中只能调用静态变量i,不能调用非静态变量j,使用类名直接调用静态函数时不生成对象,而调用非静态成员变量需要生成对象,
静态函数中不能使用this,因此静态函数中不能使用非静态成员变量。
3.静态代码块
static {
System.out.println("静态代码块");
}
静态代码块没有命名,定义方法直接用static加一个大括号,静态代码块在装载类的时候执行,静态代码块的主要作用是为静态变量赋初始值。