所以有人给了我一个小程序来编写,我做得很好,但后来被问到以下问题,我有点困惑。
下面的值是什么?
//我告诉他们,他们会得到一个错误,因为它们没有初始化,所以他们指向内存中的某个地址...
int a;
Object b;
int d = a;
bool c;
如果在 Java 中,请将最后一行替换为
boolean c;
请让我知道这个问题的正确答案,因为我确信它会再次被提出。谢谢:)
最佳答案
.Net CLR 将所有字段和局部变量初始化为其默认值。
在您的例子中,即 0
、null
和 false
。
但是,该代码在任何情况下都无法编译。
在方法内部,C# 不允许使用未初始化的局部变量,因此 d = b
将无法编译。
作为实例字段,C# 不允许您在构造函数内部使用 this
,因此 d = a
不会在字段初始值设定项中编译。
作为静态字段,这可以编译,但缺少 static
关键字。
在 Java 中,所有这些也是如此,只是 Java 允许您在字段初始值设定项中使用 this
。
因此,此代码在 Java 中作为实例字段是有效的。
关于java - 面试问题(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189724/