【问题标题】:Java: creating an object in 3 single steps (Declaration, Allocation/Initialization, Assignment)Java:通过 3 个单一步骤创建对象(声明、分配/初始化、分配)
【发布时间】:2016-12-18 14:53:47
【问题描述】:

我不确定声明和初始化的定义。以及何时设置默认值初始化

1)例如对象rocky(Dog类)的声明

Dog rocky;

这只会在堆栈中创建一个条目并且没有引用?

.

2) 创建 Dog 的实例

new Dog();

内存分配在堆中,默认值初始化(变量legs0),创建一个Reference。 p>

如果我没有构造函数:编译器会创建一个默认构造函数。是空的吗? ConstructorDefault Values Initialization 必须是不同的水壶,并且是可能的 Instance Initializer 之一(下一个 Instance Initializer Block构造函数)。

.

3) Assignment:将Reference-Value放入栈中?

rocky = new Dog();

我说的对吗?

谢谢

示例:

class Dog
{
    int legs;

    Dog()
        {
            System.out.println("constructor invoked");
        }
}

public class Foo
{
    public static void main(String[] args)
        {
            Dog rocky;

            new Dog();

            rocky = new Dog();
        }
}

【问题讨论】:

    标签: java object initialization declaration


    【解决方案1】:

    以下为指向Dog 对象的指针分配内存:

    Dog rocky;
    

    以下为Dog 对象分配内存:

    new Dog();
    

    以下为Dog 指针和Dog 对象分配内存,并将指针的值设置为新创建的Dog 对象的内存位置:

    Dog rocky = new Dog();
    

    -

    编译器将默认初始化写入您定义的每个构造函数。如果你没有定义一个,编译器会创建一个默认的。 示例:

    int legs = 4;
    

    将转换为

    int legs;
    public Dog() {
        legs = 4;
    }
    

    默认初始化是构造函数中的第一条语句。

    【讨论】:

      猜你喜欢
      • 2015-11-24
      • 2016-07-28
      • 2015-12-23
      • 2010-09-24
      • 2012-11-17
      • 2013-12-27
      • 2011-12-27
      • 2020-01-03
      • 1970-01-01
      相关资源
      最近更新 更多