哪两个代码片段正确创建并初始化了一个int元素的静态数组?(选择两个。)
一个。
static final int[] a = { 100,200 };
B.
static final int[] a;
static { a=new int[2]; a[0]=100; a[1]=200; }
C。
static final int[] a = new int[2]{ 100,200 };
D.
static final int[] a;
static void init() { a = new int[3]; a[0]=100; a[1]=200; }
答案:A,B
在这里即使D看起来是真实的,谁能让我知道为什么D是错误的。
正确答案是1和2(或者用您的符号表示A和B),而且正确的解决方案是:
static final int[] a = new int[]{ 100,200 };
解决方案D不会自动初始化数组,因为运行时会加载该类。它只是定义了一个静态方法(init),您必须在使用数组字段之前调用该方法。
尝试初始化变量时遇到问题: 我搜索了该怎么做,但没有找到。我读到要初始化的对象必须是静态的,但我找不到声明Map静态的方法。 谢谢你的帮助!
为什么在这种情况下两个数组的作用不同?
下面的代码定义了一个数组 当我使用这个数组时 给出错误: “dota2rtl.palphabetsdic”的类型初始值设定项引发异常。---->System.NullReferenceException:对象引用未设置为对象的实例。 有人能帮我一下吗? 注意,什么是NullReferenceException以及如何修复它?覆盖数组,但应将其设置为不。
对于“何时”有很多很好的答案,比如在这个线程中——静态类初始化何时发生?现在我的问题是“如何”。这是斯蒂芬C.的回答中的一段话 类静态初始化通常在第一次发生以下事件之前立即发生: 将创建该类的一个实例, 调用该类的静态方法, 已分配类的静态字段, 使用非恒定静态场,或 对于顶级类,执行词汇嵌套在类中的assert语句 那么它是如何在内部完成的呢?每个可能触发初始化的指令都用包装?任何工作的细节:-
问题内容: 这是一段Java代码: 它如何编译?初始化后已执行变量“ ture”的声明。据我所知,静态块和字段已经按照它们出现的顺序执行了。 现在,为什么实例块中的值9已被打印3次?顺便说一句,该类的实例已创建了3次。那不是功课,我正在学习Java进行认证。 问题答案: 关于第一个问题,静态块确实按照它们出现的顺序进行处理,但是在处理静态块之前,先处理声明。声明作为类 准备工作 的一部分(JLS§
问题内容: 我想知道为什么默认情况下C,C ++和Java中的确切静态变量初始化为零?为什么对局部变量不是这样? 问题答案: 为什么要对静态变量进行确定性初始化而对局部变量不进行初始化? 了解如何实现静态变量。 它们的内存在链接时分配,并且它们的初始值也在链接时提供。 没有运行时开销。 另一方面,用于局部变量的内存是在运行时分配的。堆栈必须增长。你不知道以前在那里。如果需要,可以清除该内存(将其清