- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
三年前关闭了。
此帖子已于7天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
Improve this question
根据Coursera上的一个讲座,类是类型,例如,如果我们有一个名为Book的类,我们可以编写一行代码-Book book = new Book("Java",100);
这将在堆中创建一些数据,我们称之为对象,类型为"Book"的变量"book"指向该对象。现在我的问题是,变量"book"可以有什么样的值?我尝试使用System.out.println(book);
打印了这个-
月食测试手册@24d46ca6
("eclipsetest"是我的包的名称,"Book"是类)那么这里到底发生了什么?
编辑:不是this的复制品,因为我知道如何使用对象打印数据而不会得到那些乱七八糟的东西,但我不明白作为数据类型的数据类可以包含什么类型。我还尝试进一步查找,发现类是"引用"数据类型,并包含对对象的"引用"。然而,它们是如何做到的,我不明白,因为Java没有任何方法像C那样打印内存地址。
2条答案
按热度按时间ghhaqwfi1#
事实上,类就是类型,类可以包含 other 类型的示例作为其定义的一部分。此类用户定义类型可以包含其他用户定义类型(类、枚举)或内置类型(
int
、boolean
)。给定您发布的示例构造函数,该特定类可能定义如下:
它包含用户定义的类型
String
(一个作为标准库的一部分为您定义的类)和内置类型int
。在试图获取已声明对象的内容时,您试图打印它,但是,您的print语句将有关引用
book
的信息写入输出,而不是转到实际对象的位置(引用所指向的位置)并打印有关该位置的信息--在Java中无法自动完成此操作。相反,您需要覆盖内置的
java.lang.toString()
方法,正如@bkbb所暗示的,以便获得存储在对象中的实际信息。或使其作为字符串操作的一部分自动调用
31moq8wy2#
Java中的所有类都是直接或间接地从java.lang.Object类派生出来的。你可能也想学习更多关于hashCode(),toString(),equals()方法的知识,然后再考虑你最初的帖子。