Java中static的用法

Java中用到static的情况有两种:

1. 创建多个object的时候,某个(些)filed(s) 的值是全局性的(不仅仅适应于某个/些object)。这样我们只需开辟一块存储区域给这个filed就行了,不用每次创建新object的时候都给它开辟一块新的存储区域。

2. 如果想不是实例化就调用方法,那么可以用static标记。

由以上定义可以看出:

1. 无需实例化,直接用class的名字.field(或.method)就可以直接操作数据。

2. 实例化以后,用object的名字.field(或.method)效果同1是一样的。

public class HelloWorld {
    
    //标记static以后,所有的实例化object中的i都来自同一地址
    public static int i = 3;
    
    //每次实例化一个object,都要为non-static的j开辟一块新的地址
    public int j = 3;
    
    //该方法无需实例化即可调用。
    public static void addOne()
    {
        //i标记为static,无需实例化即可以操作。
        HelloWorld.i++;
    } 
    
    //non-static方法必须实例化以后方可调用。
    public void addTwo()
    {
        HelloWorld.i++;
    }
    
    public static void main(String[] args) {
        
        //无需实例化,直接调用static函数,直接操作i变量。    
        HelloWorld.addOne();
        System.out.println(HelloWorld.i);
        //non-static方法必须实例化后才能用。
        HelloWorld hw = new HelloWorld();
        hw.addTwo();
        System.out.println(HelloWorld.i);
        //又实例化了一个object叫hw1,由于共用同一地址,i值是5。
        HelloWorld hw1 = new HelloWorld();
        System.out.println(hw1.i);
        //hw的j变量加1,j变为4,而hw1仍为3,说明二者non-static的j不在同一地址。
        hw.j++;
        System.out.println("hw.j = " + hw.j);
        System.out.println("hw1.j = " + hw1.j);
    }
}

输出:

4
5
5
hw.j = 4
hw1.j = 3

你可能感兴趣的:(个人总结)