如果构造函数被声明为不完整类型会发生什么?

时间:2016-03-07 17:28:38

标签: java memory constructor initialization declaration

只是好奇。有以下简单的类:

public class Foo {
   private static int fooVar = 1;
   private int foo;
   private int boo = 1; // another int, not a typo
   public Foo(int foo) {
      this.foo = foo;  
   }
}

通话:

Foo a, b, c;

首先宣布哪一个? (我假设从lft到右边。)是否也声明了实例变量fooVarfoo?记忆中会发生什么?变量boo的值是否保存在内存中,甚至构造函数都没有被调用?

1 个答案:

答案 0 :(得分:0)

尼古拉斯,

a,b和c是Foo类型的指针。正如你所说,他们应该从左到右宣布。

因为与声明相同

Foo a;

Foo b;

Foo c;

  

记忆中会发生什么?是变量boo的值保存在   内存甚至构造函数都没有被调用过吗?

没有这样的价值boo或foo(错字?)。

如果尚未调用构造函数,则代码中还没有对象。

如果这样做:

Foo a= new Foo();

您实际上按以下顺序执行了两项操作: 首先创建一个Foo对象,然后它被赋予Foo指针a。

记住你的构造函数就像一个方法。请在{之前添加() 如果你传递一个输入变量,请在()中这样做 像:

public Foo(foo) {
      this.foo = foo;  }