考虑:
List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
Run Code Online (Sandbox Code Playgroud)
for (String item : someList) {
System.out.println(item);
}
Run Code Online (Sandbox Code Playgroud)
如果for不使用for each语法,等效循环会是什么样的?
我遇到了一些我以前没见过的Java语法.我想知道是否有人能告诉我这里发生了什么.
for (ObjectType objectName : collectionName.getObjects())
Run Code Online (Sandbox Code Playgroud) Java foreach有可能有条件吗?
例如,
for(Foo foo : foos && try == true)
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
有没有相当于这个,这样我可以把一个AND条件放在里面for?
在Java中,for-each循环.
如果我有一个生成数组的方法,则调用genArray().
在下面的代码中,每次都会通过调用重新生成数组genArray()吗?或者Java会调用一次方法并从数组中存储一个副本吗?
for (String s : genArray())
{
//...
}
Run Code Online (Sandbox Code Playgroud)
谢谢
private void m10(String[] arr) {
for (String s : arr) {
Supplier<String> supplier = () -> {
System.out.println(s);
return null;
};
supplier.get();
}
}
Run Code Online (Sandbox Code Playgroud)
要么
private void m10(Object[] arr) {
for (Object s : arr) {
Supplier<String> supplier = () -> {
System.out.println(s);
return null;
};
supplier.get();
}
}
Run Code Online (Sandbox Code Playgroud)
private void m11(String[] arr) {
for (int i = 0; i < arr.length; i++) {
Supplier<String> supplier = () -> {
System.out.println(arr[i]);
return null;
};
supplier.get();
}
}
Run Code Online (Sandbox Code Playgroud)
在情况2中,我知道该变量 …
如果我们在空集合中执行foreach循环,则不会采取任何操作.但是当集合为空时,应该如何处理案例中的结构呢?
Collection<String> c=null;
....
for(String item:c){
println(item);
}
Run Code Online (Sandbox Code Playgroud)
我可以运行代码并查看null引用异常.但究竟应该是什么行为呢?我找不到任何关于它的手册页.
我知道在头部抛出了异常,因为集合是null.但我想知道如何抛出异常.它可以通过if,或通过Objects.requireNonNull(),或以其他方式完成,或者如David的答案中所示.
我有点好奇 values() 方法如何在 Java 中的 Enum 类型中工作。正如 Java 规范文档中所见,我们可以在 for each 循环中迭代某个枚举类型的所有值。例如
for (Planet p : Planet.values()) {
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));
}
Run Code Online (Sandbox Code Playgroud)
我认为对于每个循环迭代所有值。在这个调用中,我们在每个循环调用中重复调用一个方法,因此它将如何迭代所有枚举类型或 values() 方法使用某种迭代器。任何人都可以帮助我编写此方法的实现文档吗?