我是Java的新手,我在下面找到了这个链表实现。在main方法中,我们创建一个名为theLinkedList的LinkList实例,并使用它调用insertFirstLink方法4次。 InsertFirstLink方法的作用是创建名为newLink的Link实例。当我们调用insertFirstLink 4次时。
此方法是否创建了4个具有相同名称的链接实例(newLink)? 怎么可能? 我们不能创建具有相同名称的对象吗? 我缺少什么?我需要学习什么来理解这一部分?
谢谢你们。我理解我的问题。每次执行后,新链接变量都会被销毁,但每个被销毁的变量都有一个引用,它就像一条线。我们总是可以通过该行找到我们想要的节点。
{{1}}
答案 0 :(得分:1)
public void insertFirstLink(String bookName, int millionsSold) {
Link newLink = new Link(bookName, millionsSold);
newLink.next = firstLink;
firstLink = newLink;
}
此方法不会创建具有相同名称的相同变量4次,因为变量newLink
范围仅在方法范围内有效。因此,每次调用此方法时,都会创建一个新变量,然后在执行该方法之后销毁该变量。您不能在同一方法或类中创建具有相同名称的变量。
例如,这将无效:
public void insertFirstLink(String bookName, int millionsSold) {
Link newLink = new Link(bookName, millionsSold);
newLink.next = firstLink;
firstLink = newLink;
Link newLink = new Link(bookName, millionsSold);
}
因为变量是以相同的方法声明的。
您可以阅读this以更好地了解变量范围
编辑:要循环到此列表,您可以使用简单的while:
// boolean used to exit the loop
boolean found = false;
// save firstLink to another object, this way you will not modify the linked list while looping
Link link = theLinkedList.firstLink;
while(!found)
{
// if line.next != null you have another element in the list, so save it into link and go forward on the loop
if(link.next != null)
{
link = link.next;
}
else
{
// here you are one the first inserted element
// set found to true to exit while loop
found = true;
//this will print "Don Quixote 500"
System.out.print(link.bookName + " " + link.millionsSold);
}
}
答案 1 :(得分:0)
对象没有"名称"。这一行:
Link newLink = new Link(bookName, millionsSold);
只需声明一个名为newLink
的变量。变量名称在可见性范围内必须是唯一的,因此这是不可能的:
public void insertFirstLink(String bookName, int millionsSold) {
Link newLink = new Link(bookName + " one", millionsSold);
Link newLink = new Link(bookName + " two", millionsSold);
...
}
然而这是可能的:
public void insertFirstLink(String bookName, int millionsSold) {
{ Link newLink = new Link(bookName + " one", millionsSold); }
{ Link newLink = new Link(bookName + " two", millionsSold); }
...
}
答案 2 :(得分:0)
insertFirstLink()
在链接列表的前面添加一个新链接。您在main
的每次通话中使用不同的参数调用该函数四次。对于每个调用,函数调用链接构造函数Link()
,并将参数传递给函数。然后,新创建的Link
的下一个字段被设置为指向LinkedList中的第一个链接。然后firstlink
设置为指向刚刚创建的新链接。
答案 3 :(得分:0)
我需要学习什么才能理解这一部分?
您需要详细研究java中的变量范围