gpt4 book ai didi

java - 如果类是类型,那么它们可以保存什么类型的数据?

转载 作者:行者123 更新时间:2023-12-01 19:35:10 28 4
gpt4 key购买 nike

根据 Coursera 上的讲座,类是类型,例如,如果我们有一个名为 Book 的类,我们可以编写一行代码 -

Book book = new Book("Java",100);

这将在堆中创建一些我们称为对象的数据,并且“Book”类型的变量“book”指向该对象。现在我的问题是,变量“book”可以有什么样的值?我尝试使用打印它

System.out.println(book);

它打印了这个 -

eclipsetest.Book@24d46ca6

(“eclipsetest”是我的包的名称,“Book”是类)那么这里到底发生了什么?

编辑:不是 this 的重复项因为我知道如何使用对象打印数据而不会出现乱码,但我无法理解数据类型可以容纳什么类型的数据类。我还尝试进一步查找,发现类是“引用”数据类型并保存对对象的“引用”。但是,我不明白他们是如何做到的,因为 Java 没有任何方法像 C 那样打印内存地址。

最佳答案

事实上,类是类型,并且类可以在其中保存其他类型的实例作为其定义的一部分。此类用户定义类型可以保存其他用户定义类型(类、枚举)或内置类型(intboolean)。

鉴于您发布的示例构造函数,该特定类可能定义如下:

public class Book
{
private String title;
private int numberOfPages;

public Book(String title, int numberOfPages)
{
this.title = title;
this.numberOfPages = numberOfPages;
}
}

它保存用户定义类型String(作为标准库的一部分为您定义的类)和内置类型int

在尝试获取已声明对象的内容时,您正在尝试打印它。但是,您的 print 语句正在将有关引用 book 的信息写入输出,而不是转到实际对象的位置(引用所指向的内容)并打印有关该对象的信息 -在 Java 中没有办法自动执行此操作。

相反,您需要覆盖内置的java.lang.toString()方法,正如@bkbb提到的那样,以便获取存储的实际信息在对象中。尝试打印时,您需要显式调用此方法

System.out.println(book.toString());

或使其作为字符串操作的一部分自动调用

System.out.println("My book is: " + book);

关于java - 如果类是类型,那么它们可以保存什么类型的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58036132/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com