我是Java的新手。请帮我理解Java。
我无法理解我的老师关于“堆栈”的代码。
以下代码适用于我的班级Person
。我的问题是private Person next;
是什么意思?为什么这个变量有类名?这堂课在做什么?
public class Person {
private String _name, _address;
private int _id;
private Person next; // what is this mean and do
public Person(String a, String b, int c){
this._name = a;
this._address = b;
this._id = c;
}
public Person(){
}
public String getname(){
return this._name;
}
public String getaddress(){
return this._address;
}
public int getid(){
return this._id;
}
public person getnext(){
return this.next;
}
public void setname(String a){
this._name = a;
}
public void setaddress(String a){
this._address = a;
}
public void setid(int a){
this._id = a;
}
public void setnext(person a){
this.next = a;
}
@Override
public String toString(){
return "Person{"+ "Name = " + _name +", Address" + _address +", Id = " + _id +'}';
}
}
这是我的主类代码。在这个主要课程中,我无法理解private static Person HeadStack
包含什么以及它将做什么。为什么HeadStack关键字总是在方法“pop”,“push”和“print”中使用?
public class mainmahasisswa {
private static Person HeadStack; // what is this mean & do
public static void main(String[] args) {
push();
push();
push();
print();
pop();
print();
pop();
print();
push();
print();
}
private static Person setdata(){
person pr = new person();
String name, address;
int id;
name = JOptionPane.showInputDialog("Name : ");
address = JOptionPane.showInputDialog("Address : ");
id = Integer.parseInt(JOptionPane.showInputDialog("id : "));
pr.setname(name);
pr.setaddress(address);
pr.setid(id);
pr.setnext(null);
return pr;
}
private static void pop(){
if (HeadStack != null){
person aa ;
aa = HeadStack.getnext();
HeadStack = aa;
}
else{
System.out.println();
}
}
private static void push(){
person x = setdata();
if(HeadStack != null){
x.setnext(HeadStack);
HeadStack = x;
}
else{
HeadStack = x;
}
}
private static void print(){
if(HeadStack != null ){
person y = HeadStack;
while(y != null){
System.out.println(y.toString());
y = y.getnext();
}
System.out.println();
}
else{
System.out.println();
}
}
}
答案 0 :(得分:1)
将其视为链中的链接private person next
提供指向此链中“下一个”person
对象的链接,如果不存在则提供null
。
private person next; // what is this mean and do
这是一个声明,其中的下一个是person
类型,最初被分配null
此...
private static person HeadStack; // what is this mean & do
只是一个声明,表示HeadStack
是person
的类型static
,这意味着它不依赖于要访问的任何类的特定实例。
查看Language Basics: Variables和Understanding Class Members
为什么这个HeadStack关键字总是在方法“pop”,“push”,“print”
中使用
该对象代表链中的第一个链接