java - java中链表代码出现意外结果

标签 java

以下代码编译并执行时没有任何错误或警告。但给出了意想不到的结果。

代码:

import java.util.LinkedList;
import java.util.Scanner;

//defining a custom data-type (class)
class LLObj{
    static int NodeInt;
    static char NodeChar;

    LLObj(int x, char y){
        NodeInt = x;
        NodeChar = y;
    }
}

class LLexp{

    static LinkedList<LLObj> list = new LinkedList<>();

    public static void main(String[] args){

        list.addLast(new LLObj(5,'c'));

        System.out.println(list.get(0).NodeInt);
        System.out.println(list.get(0).NodeChar);

        list.addLast(new LLObj(7,'h'));

        System.out.println(list.get(0).NodeInt);
        System.out.println(list.get(0).NodeChar);
        System.out.println(list.get(1).NodeInt);
        System.out.println(list.get(1).NodeChar);
    }
}

预期输出 -

5
c
5
c
7
h

获得的输出 -

5
c
7
h
7
h

  1. 为什么会发生这种情况?
  2. 如何获得预期结果?

最佳答案

这就是问题:

static int NodeInt;
static char NodeChar;

如果目的是让每个 LLObj 都有自己的值(这似乎是可能的),那么这些应该是实例变量。

理解实例字段/方法和静态字段/方法之间的区别非常重要。请参阅Java tutorial了解更多详情。

关于java - java中链表代码出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655745/

相关文章:

java - 有没有办法在 IntelliJ IDEA 中使用 jlink 来创建自定义模块化运行时镜像?

java - EventInjector.KeyEvent 在黑莓的实际设备上不起作用

java - 加载位于加载器内的 Java 代理 JAR

java - 在 Java 中避免 != null 有什么好处?

java - fater网页源提供者

java - 在 GAE 上部署 scala 类时出现 classnotfound 异常

java - 无法使用 FTPSClient 通过 FTP 服务器传输数据 - 连接被拒绝

java - Kotlin 注释不在 fieldDecleration 或编译的 java 中

java - 测试方法返回特定对象junit

java - JButton、JCheckBox 和类似的交互器在视觉上没有变化