。这里面的
This Test tt = new ThisTest()
对象 堆区分配
方法分为:构造方法和成员方法,构造方法的名字要和类名一致,成员方法的名字完全是自己起的。
this就是它当前所在的类的引用。
相当于是一个类里面的隐藏的关键字。
我们在类里面使用定义过的不需要用 . 但是在外面需要用 . ,这就是因为在类里面省略了 this.xxx。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a3733cf7770d08924767a830f2046f08.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7ac921a213d74e6bd4b2527c1103cd5f.png)
this是当前调用的,所以p1.show和p2.show的输出不一样,第一个this=p1 第二个this=p2。 this.就相当于xxx的。
形参变量名 与 成员变量名 要尽可能的一样,提高代码的可读性。
就近原则 懒人原则 当一样的时候,选择离自己最近的作为数值。
最下面左边的name和age使用的是 string里面的name 和age,而右边更是上面person(string name,int age)里面的,所以它自己给自己赋值。都是形参变量
所以并没有影响上面的成员变量的name和age,所以输出还是成员变量的name 和age并没有改变。
用this来表明是这个类的变量
相当于和之前需要把形参和成员变量改成一样的,然后使用成员变量的时候要在它前面加this.来区别,否则就会就近原则,出现null和0
这都是针对 构造方法的 自定义的成员方法并不要求形参和成员变量一致。
this还可以调用成员变量或者方法,比如上面的this.name调用了成员变量,this.grow调用了成员方法。但是一般可以省略,只有在 构造方法 里面才需要使用this来区别,来指定它是成员变量或者方法而不是形参。
这样也可以
this()可以在构造方法的第一行调用本类的有参/无参构造方法,但必须在第一行,如上面的图所示。
boy b3 = null
相当于在栈区申请了内存,但是没有保存任何堆区的地址。会出现空指针异常,因此申请的时候一定要有指向。