这类构造方法有什么用:
{
this.x=x;
this.y=y;
}
如果不用构造,每次新建对象的时候都要手动赋值,构造直接传参就行了,减少了重复代码
赋值时机不同,根据自己需要灵活选择
直接赋值内存地址和值都相同,构造方法赋值,内存地址不同,值同,理解正确吗
根据场景选择,
如果有些是必要条件的会可以会选择让用户构造的时候传值,
有些可以给默认值的就可以先赋一个默认值。
当你通过new关键字新建一个这个类的实例的时候,在系统的堆空间中,这个类所描述的变量x和变量y就已经存在了。但这时,他们的值是由
系统自动初始化的,而不是你想要的值。所以,你需要将他们的值更改为你想要的值。this关键字相当于c语言中的一个指针,指向本类的实例。换言之
,返回一个本类的引用
public class Demo{
private int x;
private int y;
public Demo (){}
public Demo(int x,int y){
this.x=x;
this,y=y;
}
public static void main(String args[]){
Demo demo1=new Demo();//调用第一个构造器,构造第一个实例demo1,其x以及y的值被系统自动初始化为0
Demo demo2=new Demo(1,2);//调用第二个构造器,构造第二个实例demo2,其x的值为1,y的值为2
System.out.println(demo1.x+" "+demo1.y+"");//结果为0 0
System.out.println(demo2.x+" "+demo2.y+"");//结果为1 2
}
}
构造方法里是初始化啊。
在构造方法中,参数x是该构造方法中的局部变量,要想为本类的变量x复制必须使用this.x, 这里的this是指当前类,相同的,要想给当前类的变量x赋值则使用surper.x = x;
构造方法里的只用于初始化,
this指代本类的一个对象,主要是用来区分参数同名情况