为什么当我将自定义 Pair 类推入队列接口时,返回 0;

问题描述

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。

解决方法

错误出在您的构造函数中,因为您只使用传递的参数 ab,并且没有初始化 ab 变量类实例,因此它们初始化为 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关键字,将帮助您引用类变量并在类变量中赋值。