当我们设置变量的数据类型与类名相同时,它叫什么



正如你所说,我是Java的新手。我看了几门入门课程,现在我遇到了制作链表,其中字段与类的数据类型相同。例如,此代码:

    public class CupNode {
private int number;
private int capacity;
private CupNode next;
public CupNode(int number, int capacity) {
    this.number = number;
    this.capacity = capacity;
    this.next=null;
}
public int getNumber() {
    return number;
}
public void setNumber(int number) {
    this.number = number;
}
public int getCapacity() {
    return capacity;
}
public void setCapacity(int capacity) {
    this.capacity = capacity;
}
    }

在第 4 行中,它说下一个是私有 CupNode;我知道整数,双精度,字符串等。但我从未遇到过使用类名作为数据类型的情况。所以我想知道当我们使用类名作为数据类型时它叫什么,这样我就可以搜索教程来理解它的含义。

另外,为什么我们不能将cupNode定义为字符串?

在面向对象编程(OOP)中,就是创建类和对象并弄乱它们。超级好玩!

如您所知,intdoublefloat等都是数据类型。实际上,它们被归类为基元类型。您可能也听说过String.信不信由你,String是一个类的名字!这些"类名类型"称为引用类型

让我们以String为例:

String a = "Hello";

当您创建一个引用类型的变量并使用某个值对其进行初始化时,您实际上是在创建该类的新实例。在上面的示例中,您正在创建String的新实例,即一个新字符串。此新实例称为对象

所以在你的例子中,你的CupNode是一个类。您可以像这样创建它的新实例:

CupNode node = new CupNode (0, 20);

"等等!是什么?"你喊道。 new CupNode(0, 20)表示CupNode的新实例。这两个数字是参数,定义如下:

public CupNode(int number, int capacity) { // <--- here
    this.number = number;
    this.capacity = capacity;
    this.next=null;
}

你可以用一个对象做什么?

您会看到您在类中定义的那些方法,例如 getNumbergetCapacity ?创建对象后,可以使用对象调用这些方法!

System.out.println(node.getNumber());

对象在Java中非常有用。以下是更多示例:

当您想要接受来自控制台的用户输入时,您可以

Scanner sc = new Scanner(System.in); // System.in represents the console's input stream
String input = sc.nextLine();

当您要创建窗口时,

JFrame frame = new JFrame();
frame.setVisible(true);

当您想要存储大于最大值的非常大的整数时long

BigInteger myInt = new BigInteger("9.9999e99");

当您要创建具有动态大小的数组时:

ArrayList<String> list = new ArrayList<> ();
list.add("Hello");

你可以用课程做很多事情!

这只是意味着您拥有类型 CupNode 的成员,它与将 intString 作为成员没有什么不同。

您可以访问此成员的所有功能,就像在 main 中创建实例时所做的那样

CupNode cup = new CupNode(2, 2);
cup.getNumber(); // call getNumber() in cup
cup.getNext().getNumber(); // call getNumber() in next member in cup

next的吸气剂看起来像

public CupNode getNext() {
    return next;
}

最新更新