Animal animal = new Animal()究竟哪个是对象
程序员文章站
2022-07-05 11:26:20
前言:在上课时被老师提问过一次,把这个记下来。Animal animal = new Animal()中,对象是animal 还是new Animal()呢?public class Animal {private String name;private String cry;public Animal(String name, String cry) {this.name = name;this.cry = cry;}public String toStrin....
前言:在上课时被老师提问过一次,把这个记下来。
Animal animal = new Animal()中,对象是animal 还是new Animal()呢?
public class Animal {
private String name;
private String cry;
public Animal(String name, String cry) {
this.name = name;
this.cry = cry;
}
public String toString() {
return name + cry;
}
public static void main(String[] args) {
Animal animal = new Animal("小狗", "汪汪叫");
System.out.println(animal);
}
}
上述代码结果:小狗汪汪叫
我们假如animal是对象
public static void main(String[] args) {
Animal animal;
System.out.println(animal);
}
编译时会报animal没有实例化的错误
我们接着往下看
//①
Animal animal = new Animal("小狗", "汪汪叫");
System.out.println(animal);
//②
System.out.println(new Animal("小狗", "汪汪叫"));
①和②两个代码的效果是一样的。
到这里,我们大概可以感觉到,animal其实是一个Animal类型的变量,而new Animal()才是真正的对象,主方法执行new Animal()时,会在堆中开辟一个储存空间,我们假设那个存储空间的地址为0x1234,我们只是将对象在堆中的地址(即0x1234)赋给animal变量,让变量通过该地址去引用该对象罢了,这样我们就可以通过变量去调用对象的方法了。
图解如下:
一个正在学习的大二学生,若有错误请大家指正,感谢。
本文地址:https://blog.csdn.net/zhouDonQuixote/article/details/110238993
上一篇: 浅析PHP与Python进行数据交互