正如你所说,我是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)中,就是创建类和对象并弄乱它们。超级好玩!
如您所知,int
、double
、float
等都是数据类型。实际上,它们被归类为基元类型。您可能也听说过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;
}
你可以用一个对象做什么?
您会看到您在类中定义的那些方法,例如 getNumber
、 getCapacity
?创建对象后,可以使用对象调用这些方法!
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
的成员,它与将 int
或 String
作为成员没有什么不同。
您可以访问此成员的所有功能,就像在 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;
}