Java 如果构造函数被声明为不完整类型,会发生什么?
只是好奇而已。具有以下简单类:Java 如果构造函数被声明为不完整类型,会发生什么?,java,memory,constructor,initialization,declaration,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到右边)实例变量fooVar和foo是否也
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到右边)实例变量fooVar
和foo
是否也声明了?记忆中发生了什么?变量boo
的值是否保存在内存中,即使构造函数根本没有被调用?Nikolas
a、 b和c是Foo类型的指针。正如你所说,它们应该从左到右声明
因为这和声明是一样的
福阿
富b
富科
记忆中发生了什么?变量boo的值是否保存在
内存甚至构造函数都没有被调用
没有这样的值boo或foo(输入错误?)
如果尚未调用构造函数,则代码中还没有对象
如果要这样做:
Foo a= new Foo();
实际上,您正在按以下顺序做两件事:
首先创建一个Foo对象,然后它是一个指向Foo的指针a
记住,构造函数就像一个方法。请在之前添加(){
如果要传递一个输入变量,请在()
比如:
声明对您来说意味着什么?没有创建任何对象,因此实际上没有发生任何事情。您的代码基本上在每一行都有编译错误。请在发布之前检查您的代码。
fooa,b,c;
只在堆栈框架中为三种引用类型保留插槽。没有执行任何指令。这可能会有所帮助。很抱歉,刚才看到您的v变量。不,它们没有被创建,因为还没有对象。到目前为止,你只有指针。
public Foo(foo) {
this.foo = foo; }