java构造器问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 08:28:57
如下一段代码
public class Test_1 {
int a = 1;

int b = 2;

void Test_1() {
a = 3;
b = 4;
}

public static void main(String[] args) {
Test_1 app = new Test_1();
System.out.println(app.a + "," + app.b);
}

}
最后的输出a是1,b是2
为什么不是3,4??
求详解

构造函数不能有返回值,你的void Test_1() 不是构造函数,只是一个碰巧和类名相同的方法。

把void去掉你再试试

楼上说的对,你那个不是构造器,因为有返回值类型,是一个陷阱,普通方法允许和构造方法重名,但是不符和java编码规范

构造方法没有返回值,而且不能是 VOID,把void Test_1()换成public Test_1()就OK了、

void Test_1() {
a = 3;
b = 4;
}
这只是一个普通的方法,不是类的构造方法
构造方法没有返回类型,如
Test_1() {
a = 3;
b = 4;
}

Test_1 app = new Test_1(); 当程序运行这行代码的时候会自动调用类的无参数构造方法即Test_1(){}
而类中并没有写这个无参数的构造方法,那JAVA虚拟机会创建一个无参构造方法并调用.

而在该程序中并没有调用void Test_1() {
a = 3;
b = 4;
}
所以a和b的值并没有被改变