欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Animal animal = new Animal()究竟哪个是对象

程序员文章站 2022-04-09 23:19: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变量,让变量通过该地址去引用该对象罢了,这样我们就可以通过变量去调用对象的方法了。

图解如下:

Animal animal = new Animal()究竟哪个是对象

一个正在学习的大二学生,若有错误请大家指正,感谢。

本文地址:https://blog.csdn.net/zhouDonQuixote/article/details/110238993

相关标签: 基础 java