关键字static的用法

时间:2021-09-20 23:16:56

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加一个大括号,静态代码块在装载类的时候执行,静态代码块的主要作用是为静态变量赋初始值。