我用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在构造函数方法声明中使用时,类的静态字段不再更改?
void
在Java中,构造函数不是方法。它仅具有类的名称和特定的可见性。如果它声明返回一个值,则它不是构造函数,即使它声明返回一个void。注意这里的区别:
public class SomeClass { public SomeClass() { //constructor } public void SomeClass() { //a method, NOT a constructor } }
另外,如果类未定义构造函数,则编译器将自动为你添加默认构造函数。