4

Java の次の違いは何ですか:

  1. 物体

  2. 参照ID

  3. 参照変数

次のようなステートメントを見ると:

Emp e = new Emp();

これEmpはクラスですが、eそのオブジェクトではありませんか? もしそうなら..どこかで私はこれを見ました:

cos もしそうなら..どこかで見たような

Emp e = new Local(); 

local は の子クラスですEmp。ではe、この場合はどういう意味ですか?それは何を保持していますか?

4

8 に答える 8

3
Emp e

このステートメントは、参照変数 'e' をスタックに作成します。

    new Emp()

このステートメントは、ヒープ内にオブジェクトを作成します。オブジェクトは単なるバッファ、または「メモリのチャンク」と言えます。したがって、バッファはヒープに予約されます。したがって、ステートメント、

   Emp e=new Emp() 

ヒープに作成されたそのオブジェクトの参照 ID を参照変数 'e' に渡します。

于 2014-03-19T17:20:17.323 に答える
3

オブジェクトは、本質的に、ヒープに存在するメモリの塊です。(オブジェクトのメモリ構造の一部には、そのオブジェクトのクラスへの参照が含まれます。)

Java のオブジェクト変数 (eこの例では など) には、ヒープ内に存在するオブジェクトへの参照が含まれています。

クラスはこれらすべてとはまったく異なります。それらはそのタイプのオブジェクトの構造を記述し、メソッドの実装などを持っているかもしれませんが、クラスは他のオブジェクトとはまったく異なるメモリ領域に存在します。

于 2012-05-26T13:33:57.403 に答える
0

簡単な質問です...

emp e=new emp();

ここでeは、オブジェクトへの参照 ID です。empクラスへの参照変数であり、オブジェクトIDは状態と動作の組み合わせが異なります..

于 2013-11-16T15:26:40.847 に答える
0

オブジェクトの参照 ID を表示するプログラムを作成しました。

class abc
{

   int a=10;
   int b;
}

class t extends abc
{

   public static void main(String args[])
   {
     abc A=new abc();
     System.out.println(""+A);
   }
}

出力: 驚くべきことに 16 進文字列:

"abc@52e922"

Java は、参照 ID と呼ばれる 16 進文字列の形式で、オブジェクトの実際の場所を別の場所にマップします。メモリに保存されているオブジェクトの実際の場所は表示されません。

于 2016-07-12T04:18:38.757 に答える
0

車 c=新しい車();

オブジェクトは、非静的データ メンバーがメモリを取得するヒープ内の単なるバッファまたはメモリです。

参照 ID はスタック内の new 演算子によって生成され、オブジェクトのメモリ ロケーションをハッシュコード形式で含むメモリ ロケーションです。参照 ID は、オブジェクトに到達する唯一の方法です。参照 ID が生成されるのは、Java には実行時に割り当てられたメモリには名前がないというルールがあり、実行時にオブジェクトが作成されることは誰もが知っているため、オブジェクトにも名前がなく、その操作を実行するには一意の ID が必要なためです。そのため、Java にはオブジェクトごとに一意の参照 ID があります。

上記の例では、c は参照 ID を格納する参照変数です。

于 2018-01-29T18:52:59.683 に答える