Java の次の違いは何ですか:
物体
参照ID
参照変数
次のようなステートメントを見ると:
Emp e = new Emp();
これEmp
はクラスですが、e
そのオブジェクトではありませんか? もしそうなら..どこかで私はこれを見ました:
cos もしそうなら..どこかで見たような
Emp e = new Local();
local は の子クラスですEmp
。ではe
、この場合はどういう意味ですか?それは何を保持していますか?
Java の次の違いは何ですか:
物体
参照ID
参照変数
次のようなステートメントを見ると:
Emp e = new Emp();
これEmp
はクラスですが、e
そのオブジェクトではありませんか? もしそうなら..どこかで私はこれを見ました:
cos もしそうなら..どこかで見たような
Emp e = new Local();
local は の子クラスですEmp
。ではe
、この場合はどういう意味ですか?それは何を保持していますか?
Emp e
このステートメントは、参照変数 'e' をスタックに作成します。
new Emp()
このステートメントは、ヒープ内にオブジェクトを作成します。オブジェクトは単なるバッファ、または「メモリのチャンク」と言えます。したがって、バッファはヒープに予約されます。したがって、ステートメント、
Emp e=new Emp()
ヒープに作成されたそのオブジェクトの参照 ID を参照変数 'e' に渡します。
オブジェクトは、本質的に、ヒープに存在するメモリの塊です。(オブジェクトのメモリ構造の一部には、そのオブジェクトのクラスへの参照が含まれます。)
Java のオブジェクト変数 (e
この例では など) には、ヒープ内に存在するオブジェクトへの参照が含まれています。
クラスはこれらすべてとはまったく異なります。それらはそのタイプのオブジェクトの構造を記述し、メソッドの実装などを持っているかもしれませんが、クラスは他のオブジェクトとはまったく異なるメモリ領域に存在します。
簡単な質問です...
emp e=new emp();
ここでe
は、オブジェクトへの参照 ID です。emp
クラスへの参照変数であり、オブジェクトIDは状態と動作の組み合わせが異なります..
オブジェクトの参照 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 進文字列の形式で、オブジェクトの実際の場所を別の場所にマップします。メモリに保存されているオブジェクトの実際の場所は表示されません。
車 c=新しい車();
オブジェクトは、非静的データ メンバーがメモリを取得するヒープ内の単なるバッファまたはメモリです。
参照 ID はスタック内の new 演算子によって生成され、オブジェクトのメモリ ロケーションをハッシュコード形式で含むメモリ ロケーションです。参照 ID は、オブジェクトに到達する唯一の方法です。参照 ID が生成されるのは、Java には実行時に割り当てられたメモリには名前がないというルールがあり、実行時にオブジェクトが作成されることは誰もが知っているため、オブジェクトにも名前がなく、その操作を実行するには一意の ID が必要なためです。そのため、Java にはオブジェクトごとに一意の参照 ID があります。
上記の例では、c は参照 ID を格納する参照変数です。