自学内容网 自学内容网

【类变量】如何理解Java的类变量?

Java中三种不同的变量

(1)成员变量

(2)局部变量

(3)类变量(静态变量)

1.成员变量

在创建实例时创建类的成员变量,并且当对象被销毁时被销毁。未显式分配值的所有成员变量在声明期间自动分配一个初始值。成员变量的初始化值取决于成员变量的类型。

下表列出了成员变量的初始化值:

比如说下面这种,就是成员变量

public class Main{
   int x = 20;
}

2.局部变量

方法的局部变量在入口时创建方法,并且仅在该方法的执行期间存在。只有在执行该方法时才能访问局部变量。

方法局部变量不由系统初始化。局部变量必须在使用前显式初始化。例如,这个方法不会编译:

public class Main{
    public int wrong() { 
      int i;
      return i+5;
    } 
 
}

编译上面的代码时的输出:

3.类变量(静态变量)

用static关键字修饰的成员变量即类变量,也叫静态变量,是该类的所有对象共享的变量 ,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它的值,修改的也是同一个变量。而 static变量在类加载时就生成了 。

public class Main{ 
  static int y = 30;
}

大家有没有想过,为什么要使用静态变量(类变量)呢?

public class ChildGame {

    public static void main(String[] args) {

        //定义一个变量count,统计有多少个小孩加入了游戏
        //int count = 0;


        Child child1 = new Child("白骨精");
        child1.join();
        //count++;
        child1.count++;

        Child child2 = new Child("狐狸精");
        child2.join();
        //count++;
        child2.count++;

        Child child3 = new Child("老鼠精");
        child3.join();
        //count++;
        child3.count++;

        //游戏结束
        //System.out.println("共有" + count + "小孩加入了游戏");
        //类变量可以通过类名访问
        System.out.println("共有" + Child.count + "小孩加入了游戏");
        //下面的代码输出结果相同
        System.out.println("child1.count = " + child1.count);
        System.out.println("child2.count = " + child2.count);
        System.out.println("child3.count = " + child3.count);
    }
}

class Child{
    private String name;

    //定义一个类变量 count,是一个static 静态变量
    //该变量最大的特点就是会被Child类的所有的对象实例共享
    public static int count = 0;

    public Child(String name){
        this.name = name;
    }

    public void join(){
        System.out.println(name + "加入了游戏..");
    }

从上面的代码可以看到,假如count作为一个局部变量,独立于Child外,当然也和创建的child对象没有任何关联。我们的代码就是使用了类变量,这样一来,这个count就不是局部变量,就和外界有关联了。


原文地址:https://blog.csdn.net/qq_54432917/article/details/135841941

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!