首先我们来看代码:`
public class Test {
String name;
int age;
public static void main(String[] args) {
Test test=new Test();
System.out.println(test.name);
}
}
构造方法主要是用于给对象的成员进行初始化,在你new Test()的时候就自动给成员变量初始化了,这时name的值为null,引用类型的成员变量在被构造方法初始化的时候他们都被赋了null,那么int 类型就是0(short byte long也是一样),double、float类型就是0.0,char类型是\u0000;
这时候呢我们来讲一下利用构造方法对成员变量进行初始化
不多说 ,看代码`
public class Test {
String name;
int age;
public Test() {
}
public Test(String name,int age) {
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Test test=new Test();//第一种初始化方式,给成员变量赋值都是默认的上面有写
Test test1=new Test("小红",15);//这种赋值方式就是利用构造方法给成员变量赋值
System.out.println(test.name);
}
}
那么这个时候呢,就出现一个新的问题,上面这个this是什么意思呢?
一般我们在给变量起名字的时候呢,如果每个变量都是不同的命名的话就会很麻烦,
这个时候呢this关键字就起作用了,
this表示当前对象,谁调用这个方法,那么this指的就是这个对象
上图的代码中呢this指的是test1这个对象。
public class Test {
String name;
int age;
public Test(String name,int age) {
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Test test=new Test();
Test test1=new Test("小红",15);
System.out.println(test.name);
System.out.println(test1.name);
System.out.println(test1.age);
}
}
这个时候我们来看一下,猜一猜这个时候程序的运行结果是什么?
这个时候程序会报错
因为下面这个带参数的构造函数覆盖了无参的构造函数,所以在写构造函数的时候,一定要先把无参构造函数写好。