web-dev-qa-db-ja.com

Javaのインスタンスとは正確には何ですか?

オブジェクト、インスタンス、参照の違いは何ですか?彼らは彼らのアプリケーションにインスタンスを作成しなければならないと言いますか?どういう意味ですか?

45
priya

オブジェクトとインスタンスは同じものです。

個人的には、特定のタイプの特定のオブジェクト、たとえば「タイプFooのインスタンス」を参照するときは、単語「インスタンス」を使用することを好みます。しかし、一般的にオブジェクトについて話すとき、「インスタンス」ではなく「オブジェクト」と言います。

参照は、特定のオブジェクトを参照するか、null参照にすることができます。


彼らは、アプリケーションへのインスタンスを作成しなければならないと言います。どういう意味ですか?

彼らはおそらくあなたがこのような何かを書かなければならないことを意味します:

Foo foo = new Foo();

どのタイプをインスタンス化する必要があるかわからない場合は、アプリケーションの開発者に連絡して、より完全な例を要求する必要があります。

69
Mark Byers

「アプリケーションへのインスタンス」は何も意味しません。

「オブジェクト」と「インスタンス」は同じものです。構造を定義する「クラス」と、そのクラスのインスタンス(new ClassName()で取得)があります。たとえば、クラスCarがあり、燃費、最高速度、馬力、ブランドなどのさまざまなプロパティを持つインスタンスがあります。

参照は、Javaコンテキストでは変数*です。これはオブジェクト/インスタンスを指すものです。たとえば、String s = null;-sは参照であり、現在はインスタンスを参照していませんが、Stringクラスのインスタンスを参照できます。

* Jon Skeetは、変数と参照の違いについてメモしました。彼のコメントをご覧ください。メソッドを呼び出すときにJavaがどのように機能するかについての重要な違いは、値渡しです。

Sの値は参照です。変数と値、オブジェクトと参照を区別することは非常に重要です。

11
Bozho

Object = Instanceと思います。参照は、オブジェクトへの「リンク」です。

Car c = new Car();

変数cは、Car型のオブジェクトへの参照を格納します。

8
Voooza

キーワードnewを使用すると、たとえばJFrame j = new JFrame();というクラスJFrameのインスタンスを作成します。

new演算子は、新しいオブジェクトにメモリを割り当て、そのメモリへの参照を返すことにより、クラスをインスタンス化します。
注:「クラスのインスタンス化」という語句は、「オブジェクトの作成」と同じことを意味します。オブジェクトを作成すると、クラスの「インスタンス」が作成されるため、クラスが「インスタンス化」されます。

こちらをご覧ください
オブジェクトの作成


Javaプログラミング言語のタイプは、primitive typesおよびreferenceタイプの2つのカテゴリに分類されます。
referenceタイプは、classタイプ、interfaceタイプ、およびarrayタイプです。
特別なnullタイプもあります。
オブジェクトは、classタイプの動的に作成されたインスタンス、または動的に作成されたarrayのインスタンスです。
referenceタイプの値は、オブジェクトへの参照です。

詳細については、 タイプ、値、および変数 を参照してください

7
Alpine
Computer c= new Computer()

ここでは、Computerクラスからオブジェクトが作成されます。 cという名前の参照により、プログラマはオブジェクトにアクセスできます。

5
vijay

主な違いは、ClassName obj = nullと言うときです。そのクラスのオブジェクトを作成しているだけです。それはそのクラスのインスタンスではありません。

このステートメントは、通常のメンバー変数ではなく、静的メンバー変数にメモリを割り当てます。

しかし、ClassName obj = new ClassName();と言うときクラスのインスタンスを作成しています。このステートメントは、すべてのメンバー変数のメモリを割り当てます。

4
Kumar

基本的に、オブジェクトとインスタンスは同じ意味で使用される2つの単語です。クラスはオブジェクトのテンプレートであり、オブジェクトはクラスのインスタンスです。

3
karunesh pal

「クラスのインスタンスを作成する」方法、「クラスを取得し、そのクラスの新しい変数を作成します。この変数は、変化する入力に応じて変化します」

Nachoというライブラリのクラス

変化する「インスタンス」を保持する変数Libre

Nacho Libre = new Nacho(変数、スキャナー入力、またはここに行くものは何でも、これは変更を受け入れ、等号の左側にある「Libre」に値を置く場所です(「Nacho Libre = new Nacho( Scanner.in) "" Nacho Libre "は=の左側にあります(これは技術的な話ではなく、それが私の説明です)

「型のインスタンス」や「クラスのインスタンス」と言うよりはましだと思います。本当に重要なのは、もっと詳しく説明する必要があるだけだということです。「タイプまたはクラスのインスタンス」は初心者には十分ではありません。非常によく....その「インスタンス」Wordは非常に迷惑であり、それの単なる音は私に夢中になります....それはより詳細を求めます.....それはよりよく分解されるように頼みます私は、「インスタンス」が単に私の方位をまっすぐにすることを意味するものをグーグルで検索しなければなりませんでした.....「クラスのインスタンス」をおばあちゃんに言ってみてください。

1
Whattheheck

インスタンスのリテラルの意味は、「何かの例または単一の出現」です。 Javaの用語ではインスタンスに非常に近いものです。

Javaは動的ロードに従います。これは、実行時にすべてのコードがRAMにコピーされるC言語とは異なります。例でこれをキャプチャしてみましょう。

   class A
    {
    int x=0;
    public static void main(String [] args)    
     {
    int y=0;
    y=y+1;
    x=x+1;
     }   

    }

このコードをコンパイルして実行しましょう。

ステップ1:javac A.class(バイトコードである.classファイルが生成されます)

ステップ2:Java A(.classファイルは実行可能コードに変換されます)

ステップ2で、メインメソッドと静的要素がRAMにロードされて実行されます。上記のシナリオでは、y = y + 1行まで問題はありません。ただし、x = x + 1が実行されるたびに、ランタイムエラーがスローされますJVMは、メインメソッドの外部で宣言されているxが何であるかを知りません(非静的)。

したがって、何らかの方法で.classファイルのコンテンツがCPUで実行するためにメモリで利用可能であれば、それ以上の問題はありません。

これは、オブジェクトを作成することで実行され、キーワードNEWはこのジョブを実行します。

"実行時にハードディスク(ここでは.classファイル)のコンテンツ用にRAMにメモリを予約する概念はインスタンスと呼ばれます"

オブジェクトは、クラスのインスタンスとも呼ばれます。

Objects、これもcalledインスタンスは、関連する機能とデータを持つプログラムの自己完結型の要素です。ほとんどの場合、クラスを使用して単にインスタンスを作成し、それらのインスタンスを操作します。

-「Sams Teach Yourself Java in 21 days」という本からの定義。

2つのクラス、public class MainClassおよびpublic class Class_2およびMainClassでClass_2のインスタンスを作成します。

これは非常にシンプルで基本的な方法です。

public MainClass()      /*******this is the constructor of MainClass*******/

{

 Class_2 nameyouwant = new Class_2();

}

これがお役に立てば幸いです!

0
P. Soutzikevich