为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2023-08-16 10:04:40
根据 Coursera 上的讲座,类是类型,例如,如果我们有一个名为 Book 的类,我们可以编写一行代码 -Book book = new Book("Java",100);这将在堆中创建一些我们称为对象的数据,并且“Book”类型的变量“book”指向该对象。现在我的问题是,变量“book”可以有什么样的值?我尝试使用打印它System.out.println(book);它打印了这个 -eclipsetest.Book@24d46ca6(“eclipsetest”是我的包的名称,“Book”是类)那么这里到底发生了什么?编辑:不是重复的,因为我知道如何使用对象打印数据而不会出现乱码,但我无法理解数据类型可以容纳什么类型的数据类。我还尝试进一步查找,发现类是“引用”数据类型并保存对对象的“引用”。然而,我不明白他们是如何做到的,因为 Java 没有任何方法像 C 那样打印内存地址。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

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


鉴于您发布的示例构造函数,该特定类可能会像这样定义:


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.lang.toString()方法,如 @bkbb 所暗示的那样,以便获取存储在对象中的实际信息。尝试打印时,您需要显式调用此方法


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

或者让它作为字符串操作的一部分自动调用


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


查看完整回答
反对 回复 2023-08-16
?
月关宝盒

TA贡献1772条经验 获得超5个赞

Java中的所有类都是直接或间接派生自java.lang.Object类。您可能还想了解有关 hashCode()、toString()、equals() 方法的更多信息。



查看完整回答
反对 回复 2023-08-16
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信