2016-11-03 5 views
1

私は誰かのコードを読んでいます。入力番号を取得し、その番号をリンクリストに変換することです。 Javaで 'head'をインスタンス化せずにNode head = nullを使用できるのはなぜですか?

class Node { 
    int value; 
    Node next; 
    Node() { 
     next = null; 
    } 
} 

は、まず私たちは、頭を示すために headノードを作成する必要があると我々は headこの Node head = nullのようにnullにしましょう:コードの一部は、このようなものです。

私の限られた経験から、headはここではノード型オブジェクトであると言われています。では、Node head = nullを使用せずにheadをインスタンス化する理由は何ですか?

少なくとも私は作成する必要があります。Node head = new Node();使用できるのはNode head = nullです。

誰でも私に説明できますか?

+0

参照に 'null 'を割り当てる前にオブジェクトが必要なのはなぜですか? – Kayaman

+1

その割り当てには意味がありません。 'Object'型のフィールドのデフォルト値は' null'です。 –

+0

Oracleは、クラスおよびオブジェクトに関する有益な情報およびチュートリアルを提供します。コードをどのように、またどのように使用するのかを理解するために、読んでいただきたいと思っています。https://docs.oracle.com/javase/tutorial/java/javaOO/index.html – Tom

答えて

1
Node head = null; 

この行には、リンクされたリストに項目がないことが記載されています。これはJavaで有効であり、headにNodeオブジェクト(または派生クラスのオブジェクト)が含まれていても現在は空であることを示しています。 (ヘッドがnullに等しいとき)

public void addItemToLinkedList(int value) { 
    if (head == null) { 
     head = new Node(); 
     head.value = value; 
    } else { 
     ... 
    } 
} 

はありませんので、最初のノードが存在しないならば、頭が

が作成されます。

は、リストに項目を追加するには、おそらくいくつかのコードのような存在です。そうでなければ、headがすでに存在する場合、elseブロックが実行され、リストの終わりを探し、別のノードを追加します。

+0

なぜheadはインスタンス化せずにNodeをデータ型として使用できますか? – Jeffery

+0

'head'は' Node'型のオブジェクト(または 'Node'から派生したもの)を含むことができますが、空でもかまいません。空の場合は空です。 「頭」はメールボックスのように考えてください。文字を含むことも、空にすることもできます。 – Jason

+0

だから、もし私がNode someone = nullと言うと;これは、誰かがNode型のオブジェクトを含むことができることを意味します。それは誰かがNodeオブジェクトであることを意味するものではありませんか – Jeffery

1

headはここ

これはオプションであるノード型オブジェクトであると考えられます。 JavaではheadNodeオブジェクト、またはnullオブジェクトであることを示し、headがノードをまったく参照していないことを示します。

nullの値はJavaでは特別です。オブジェクトがどこに行くことができるところであればどこでも行けます。 nullを割り当てる変数が空であることを示します。プログラムの残りの部分がヌルチェックを処理すると仮定すると、これはまったく問題ありません。

+0

JavaがHeadオブジェクトをNodeオブジェクトにすることができれば、tailもNodeオブジェクトにすることができます。前と次はどうでしょうか、ノードタイプにすることはできますか? JavaでNodeオブジェクトについて読むことができる文書はありますか?ありがとうございました。 – Jeffery

+0

@Jeffery * "NodeオブジェクトについてJavaで読むことができる文書はありますか?" * Nodeはあなた自身のクラスであるため(他のページは認識しないので)、そうは思わない。しかし、Oracleのヘルプページに一般的なクラスやオブジェクトについてリンクしました。あなたにも役立つかもしれません。 – Tom

+0

申し訳ありませんが、ご協力いただきありがとうございます。 ; ) – Jeffery

関連する問題