【问题标题】:How object has created in java? [closed]对象是如何在java中创建的? [关闭]
【发布时间】:2014-01-06 11:47:45
【问题描述】:

问题:对象是在 Java 中使用构造函数创建的,我们知道构造函数没有返回类型。现在 Object 引用如何指向该对象地址?

例子:

Class Demo{

    private String objName;

    Demo(String objName){
        this.objName = objName; 
    }

    public static void main(String[] args){
        Demo obj1 =  new Demo("first"); 
    }

}

在示例中我们有对象obj1,对象引用如何在内部获取对象地址?

【问题讨论】:

  • 引用 obj1obj2 保存在 stack 中,而它们的引用对象位于 heap 中。你还需要知道什么?快速的 Google 搜索会立即回答您的问题。
  • 所有这些魔法都是因为 new 关键字。而不是 constructor。构造函数没有返回类型但new
  • 它得到两个不同的引用,因为一个承包商方法创建了一个 nex 实例
  • 他欺骗了你兄弟,有一个新的运营商会处理这个问题。
  • @Kiwy No. A constructor initializes 一个新实例。该实例由“new”运算符创建

标签: java


【解决方案1】:

他们为什么不应该呢?您调用将内存保留到堆中的新操作员。因此很自然地,您会得到 obj1 和 obj2 的两个不同引用。据我所知,通过做

this.objName = objName; 

您将 objName 的内容复制到 this.objName 中,因为 Java 中的 String 被复制而不仅仅是链接。

【讨论】:

    【解决方案2】:

    当遇到new 运算符时,会在堆中创建相应类的新实例。并且相同(引用)的地址存储在堆栈中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 2013-11-10
      • 2013-11-05
      • 1970-01-01
      相关资源
      最近更新 更多