【发布时间】:2015-01-16 19:16:42
【问题描述】:
给定两个 .java 文件:
// Car.java
class Car {
static int counter = 0; // Class field
Car () { counter++;}
}
和
// Cars.java
public class Cars{
public static void main(String[] args){
System.out.println(Car.counter); // Does this instantiate a Car?
}
}
我正在学习 Java,我只是想在这里准确(迂腐?)。
编译,然后执行java Cars
会产生0
的正确值。由于 Car 还没有被实例化(或者已经实例化了?),你会说这段代码会发生什么?我的意思是,我可以看到 Cars.class 使用了 Car.class,但我无法形成正确的句子来描述它为什么起作用。对于新手,您如何描述使类字段“栩栩如生”的概念?
【问题讨论】:
-
也许我应该澄清我的问题。好的,所以我知道不会实例化 Car 对象。我进一步了解了类字段和实例字段之间的区别。我不清楚的是,由于没有实例化对象,汽车是如何“出现”以返回
0
的值的?也许我只是想太多了。 -
counter
是一个类变量。您不需要对象来访问 类变量。
标签: java class field instantiation