someVoid()如果我没有错误地引用传递给它的列表,那么当该方法发生调用时。代码添加后,列表中的2个值和大小相应地变为2。这里的一切对我来说都是可以理解的(如果我犯了错误,请纠正我)。AftersomeVoid()方法将列表的引用更改为null. 问题是:为什么经过这些操作后,列表的大小仍然是2?提前致谢。
public class Test {
List<Integer> list;
public Test() {
this.list = new ArrayList<>();
someVoid(list);
}
private void someVoid(List<Integer> list) {
list.add(0);
list.add(1);
list = null;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println("Size is: " + test.list.size());
}
}
Run Code Online (Sandbox Code Playgroud) 当我想打印Boolean(引用类型)的空数组时,结果作为输出 #1。但是当我想打印一个原始布尔类型的空数组时,输出 #2就是结果。我知道类中的toString()方法Object默认运行。该方法的默认实现如下:
this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
Run Code Online (Sandbox Code Playgroud)
但有趣的是,为什么 Z写在原始类型的输出中,但是对于 int 是I?
public class ToStringApp {
public static void main(String[] args) {
Boolean[] refs = new Boolean[1];
System.out.println(refs);
// output #1: [Ljava.lang.Boolean;@3764951d
boolean[] prims = new boolean[1];
System.out.println(prims);
// output #2: [Z@4b1210ee
int[] ints = new int[0];
System.out.println(ints);
// output #3: [I@4d7e1886
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数来查找数组(1D)中任意两个元素之间的最大差异。我已经通过多种方式解决了(我在Java中应用)
现在的问题是:如何编写一个函数,使用1 个流来计算数组中任意 2 个元素之间的最大差异?
这是我写的最后一篇:
public static int maxDifference(int[] arr) {
return Arrays.stream(arr).min().orElseThrow(NoSuchElementException::new) -
Arrays.stream(arr).max().orElseThrow(NoSuchElementException::new);
}
Run Code Online (Sandbox Code Playgroud) java ×3
arrays ×1
collections ×1
heap-memory ×1
java-stream ×1
jvm ×1
reference ×1
stack ×1
tostring ×1