问题描述
class Pair{
int a; int b;
Pair(int a,int b){
a=a;
b=b;
}
}
public class Main {
public static void main(String[] args) {
Queue<Pair> a = new LinkedList<>();
a.add(new Pair(10,20));
System.out.println(a.peek().a + " " + a.peek().b);
}
}`
为什么当我在具有参数化构造函数的队列中输入基于自定义的类 Pair 并且对象在放入队列之前初始化时,当我尝试打印它时它仍然显示 0,0。
解决方法
错误出在您的构造函数中,因为您只使用传递的参数 a
和 b
,并且没有初始化 a
和 b
变量类实例,因此它们初始化为 0
。
构造函数应该是这样的:
class Pair{
int a,b;
Pair(int a,int b){
this.a = a;
this.b = b;
}
}
,
‘this’是引用当前对象的引用变量。
当您在没有 this 关键字的情况下赋值时,它不会引用对象的变量,而是引用相同的参数化变量。
因此,
Pair(int a,int b){
a=a;
b=b;
}
实际上,不是指向类变量。
使用this关键字,将帮助您引用类变量并在类变量中赋值。