addStartNode関数では、値が 'head'の値と等しく設定された新しいノード 'temp'を作成します。それから私は値が異なる 'v'の新しいノードになるように頭を設定します。コピーに影響を与える元のものにJavaオブジェクトをコピーする方法
しかし、「temp」と「head」の両方の値を印刷すると、同じことが表示されます。
私は、コピーコンストラクタを含めて、これに対してさまざまなアプローチを試みましたが、何も変更されていないようです。
助けがあれば助かります。
public class DoublyLinkedList {
private static class Node {
private static int value;
Node(int v) {
value = v;
}
int getValue() {
return value;
}
}
private static Node head;
void addStartNode(int v) {
if (head == null) {
head = new Node(v);
} else {
Node temp = new Node(head.getValue());
PRINT VALUES HERE
head = new Node(v);
PRINT VALUES HERE
}
}
}
グレートのインスタンス化によって増分よりも、同じ変数をインクリメントします!私は静的変数を理解していると思っていました。それがなぜ機能するのか説明できますか? – numberjak
@numberjak静的なフィールドは、囲むクラスのすべてのインスタンスによって共有される1つの値です(この場合、 'DoublyLinkedList.Node')。非静的フィールドとは、囲むクラスの各インスタンスがそれ自身の独立した値を取得することを意味します。 – VGR
@numberjakちょうど私の答えに小さな例を置く – Nirekin