Android-Java-构造函数间调用&this内存图

时间:2023-03-10 00:25:59
Android-Java-构造函数间调用&this内存图

构造函数间调用:

描述Person对象:

package android.java.oop08;

// 描述Person对象
public class Person { public String name;
public int age; public Person() {
/**
* 注意:所有构造方法中的第一行(隐式的) 是执行super();
* 如果一旦写了 this() this(值) super() super(值) 隐式的 第一行 将不再执行了
*/
this("张三");
} public Person(String name) {
/**
* 注意:所有构造方法中的第一行(隐式的) 是执行super();
* 如果一旦写了 this() this(值) super() super(值) 隐式的 第一行 将不再执行了
*/
this(99); this.name = name; // 注意:不能写在 构造方法操作的 下面,否则报错
// this(99);
} public Person(int age) {
/**
* 注意:所有构造方法中的第一行(隐式的) 是执行super();
* 如果一旦写了 this() this(值) super() super(值) 隐式的 第一行 将不再执行了
*/
this("赵六", age); this.age = age; // 注意:不能写在 构造方法操作的 下面,否则报错
// this("赵六", 98);
} public Person(String name, int age) {
/**
* 现在没有写 his() this(值) super() super(值)
* 所以隐式的 super(); 会执行
*/ this.name = name;
this.age = age;
}
}

main测试方法:

package android.java.oop08;

public class Demo01 {

    public static void main(String[] args) {
// 实例化 Person 对象
Person person = new Person(); // 打印值
System.out.println("name:" + person.name + " age:" + person.age) ;
} }

执行结果:

Android-Java-构造函数间调用&this内存图




描述Cat对象:

package android.java.oop08;

// 描述Cat对象
public class Cat { /**
* 不定义构造方法,默认有一个隐式的构造函数 例如:
* public Cat() {
* ...
* ...
* ...
* }
*/ private double money; private int age; public void setMoney(double money) {
this.money = money;
} public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "Cat{" +
"money=" + money +
", age=" + age +
'}';
}
}

main测试方法:

package android.java.oop08;

public class Demo02 {

    public static void main(String[] args) {

        // 实例化Cat对象
Cat cat = new Cat(); cat.setMoney(9080938.98); cat.setAge(99); /**
* 通过实例化的Cat对象引用地址 去 调用Cat的toString()方法
*/
System.out.println(cat.toString());
} }

执行结果:

Android-Java-构造函数间调用&this内存图

对应以上Cat 案例的内存图:

this内存图:

Android-Java-构造函数间调用&this内存图

从以上图进行分析:

  this 就是 当前 实例化 对象的  对象引用地址

经过以上图分析:来验证一下就明白了:

Cat:

package android.java.oop08;

// 描述Cat对象
public class Cat { /**
* 不定义构造方法,默认有一个隐式的构造函数 例如:
* public Cat() {
* ...
* ...
* ...
* }
*/ /**
* 得到当前对象实例化的this
*/
public Cat getThis() {
return this;
}
}

main测试方法:

package android.java.oop08;

public class Demo02 {

    public static void main(String[] args) {

        // 实例化Cat对象
Cat cat = new Cat(); boolean isItEqual = cat.getThis() == cat;
System.out.println("this 是否等于 Cat cat :" + isItEqual);
} }

执行结果:

Android-Java-构造函数间调用&this内存图