【发布时间】:2014-09-17 18:42:50
【问题描述】:
我用 java 编写了这个简单的类,只是为了测试它的一些特性。
public class class1 {
public static Integer value=0;
public class1() {
da();
}
public int da() {
class1.value=class1.value+1;
return 5;
}
public static void main(String[] args) {
class1 h = new class1();
class1 h2 = new class1();
System.out.println(class1.value);
}
}
输出是:
2
但在这段代码中:
public class class1 {
public static Integer value=0;
public void class1() {
da();
}
public int da() {
class1.value=class1.value+1;
return 5;
}
public static void main(String[] args) {
class1 h = new class1();
class1 h2 = new class1();
System.out.println(class1.value);
}
}
这段代码的输出是:
0
那为什么不,当我在构造方法声明中使用void 时,类的静态字段不再改变?
【问题讨论】:
-
第二个不是构造函数。它只是一个恰好与其类共享名称的方法。
-
因为它不再是构造函数了。
-
这个类似问题的答案Why do constructors in java not have a return type 给出了一个很好的理由。
-
在我刷新页面之前你写了答案真是太棒了;全部,
标签: java constructor void