我在接受采访时得到了这个问题,即使听起来很愚蠢,我觉得这很有趣。那么,问题是,如何用堆垃圾初始化一个数组(不是zeroes
的东西)。
例如,而不是:
int [] ints = new int[10];
System.out.println(Arrays.toString(ints));
最后一次打印将保证所有内容仅为zeroes
。
但是有没有这种方法可以使用不零的潜在值来实例化此数组?
答案 0 :(得分:3)
老实说,有两件事。
我不知道这个问题的确切意义,因为它需要对每天没有完成的Unsafe
课程进行一些调查。可能是公司(我无论如何都没有通过面试),真的做了这个低级别的编程。
第二,我很幸运,我只是在看看String concat是如何完成的时候发现了这一点,我第一次看到它并对它很感兴趣。
jdk.internal.misc.Unsafe unsafe = getUnsafe();
for (;;) {
int[] arr = (int[]) unsafe.allocateUninitializedArray(int.class, 10);
int sum = Arrays.stream(arr).sum();
if (sum != 0) {
System.out.println(Arrays.toString(arr));
break;
}
}
记录为:
分配给定类型的数组,但不进行归零。