java 如果类是类型,它们可以保存什么类型的数据?[已关闭]

mi7gmzs6  于 2023-02-14  发布在  Java
关注(0)|答案(2)|浏览(114)

三年前关闭了。
此帖子已于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那样打印内存地址。

ghhaqwfi

ghhaqwfi1#

事实上,类就是类型,类可以包含 other 类型的示例作为其定义的一部分。此类用户定义类型可以包含其他用户定义类型(类、枚举)或内置类型(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);
31moq8wy

31moq8wy2#

Java中的所有类都是直接或间接地从java.lang.Object类派生出来的。你可能也想学习更多关于hashCode(),toString(),equals()方法的知识,然后再考虑你最初的帖子。

相关问题