【类变量】如何理解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)!