English 中文(简体)
对象、 引用 ID 和 Java 中的引用变量之间有什么区别?
原标题:What is the difference between an Object , Reference ID , and Reference Variable in Java?
  • 时间:2012-05-26 13:30:14
  •  标签:
  • java

Java语中以下各点有什么区别?

  1. 对象对象

  2. 参考编号

  3. 参考变量

当我看到这样的话:

Emp e = new Emp();

这里 Emp 是类, 但 e 不是它的对象吗? 如果是这样的话 。 我在其他什么地方见过这一点 :

COs,如果是这样的话......某个地方的景象

Emp e = new Local(); 

Emp 的子类在哪里? 在这种情况下, e/code > 指的是什么? 它持有什么?

最佳回答

对象基本上是一块生活在堆积中的内存块。 (对象的内存结构的一部分包括该对象的类别。 )

Java 对象变量( 类似 < code> < /code>, 在此示例中) 包含 < em> 引用 的值, 指生活在堆积中的物体 。

类别与所有这些类别完全不同;它们可以描述此类对象的结构,并具有方法性能等,但类别与其他对象的记忆区完全不同。

问题回答
Emp e

此语句在堆栈中创建引用变量 e 。

    new Emp()

此语句在堆积中创建对象。 对象只是一个缓冲, 或者我们可以说“ 一块内存 ” 。 因此, 缓冲会被保留在堆积中 。 因此, 语句

   Emp e=new Emp() 

将堆积中创建的对象的引用代号传到引用变量 e 。

Emp{
int salary;
int name;
}

New new Emp(); Emp is a class, new is used to reserve memory area in heap.New returns the address of memory it reserved. As soon as you write ,new Emp(),a memory buffer gets reserved in heap.Size of this reserved area depends upon size of data members of a class(Here it is 2 bytes since int salary takes 1 byte and int name takes 1 byte.)

Reference Id Reference id of an object is the address of location where object is stored. new Emp(); creates the object but its address is not stored and catched anywhere.

Reference Variable Now,Suppose you want to use the same object again and again,then you must have its address location(reference Id). For storing its addressid(ReferenceId) you can use reference variable. Reference variable always take 4 bytes and they are just variable which stores the address(reference of object).

Creation of reference variable Emp e2;

Assigning reference Id to a reference variable Emp e2=new Emp();

此处:

Emp e=new Emp();

e 是一个引用变量,它持有在堆积区域中创建的对象的地址。

引用 id 以散列码的形式生成, 借助物体的魔力方法( 对象共有9种方法), 即 < code> to String () 方法; 内部, 使用对象的 < code> to String 方法, 它自动生成运行时生成的每个对象的 Ref ID 。

对象的内存总是保留在 RAM. bcz 的热区域中。 在 java 中没有明确的指针。 这里, ref 变量点指向堆栈, 以引用对象在 Heap 中保留内存; bcz 对象也不清楚内存的位置 。

Stack 区段也是内存的一部分:当我们给出 ref 变量时, ref 变量必须已经存储在堆叠中,然后ref 变量知道头部的内存的哪个部分是空的,它指向对象保留位置,并保存在参考变量中。

新建是一个可文本操作符,帮助创建对象。

Emp() : 是儿童类; 如果程序员在 java 程序中没有明确提供构建器, 那么编译者会隐含地添加默认构建器, 将子类名称与同类名称相同的原因是“ new” 很容易知道非静态数据成员需要多少内存 。

这是一个简单的问题...

emp e=new emp();

这里, e 是该对象的参考代号。 emp 是该类的引用变量, 而您对象的代号则区别了状态和行为组合。

我刚刚制作了一个程序 用于显示对象的参考 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);
   }
}

输出:一个十六进制字符串令人震惊 :

"abc@ 52e922" (abc@ 52e922)

Java 以被称为参考代号的十六进制字符串的形式,绘制一个物体在单独地点的实际位置。它从不显示存储在内存中的物体的实际位置。

c=新车( );

非静态数据成员获得内存时,它只是堆积中的缓冲或内存。

引用 ID 是由堆叠中的新操作员生成的, 它是一个内存位置, 包含一个对象在散列码形式的内存位置 。 引用 ID 是到达对象的唯一方法 。 引用 ID 是生成的, 因为在 java 中有一条规则, 即运行时分配的内存不存在任何名称, 我们都知道天体是在运行时创建的, 这样天体也就没有名称, 我们需要一个独特的 ID 来进行该对象的操作, 这就是为什么在 java 中每个对象都有一个独特的参考 ID 。

在上例c 中,是一个保存引用 ID 的参考变量。

对象不是什么,它只是一个记忆区或一个堆积区的缓冲,在这个堆积区里,一个类中的所有实例数据成员都得到了一个内存。

Emp e = 新 Emp ();

在上述语句e中,这是一个参考变量,保留对象的参考代号,然而,为了安全起见,Java不允许任何人获得实际对象的代号,但Java也不能自我解释,因为我们使用的是单词参考代号,使我们重新认识到,我们没有获得对象的实际代号,而只是参考。

参考 id 将是类名@hexacetimal 表示 # 对象代码 。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...