考虑:
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语法,等效循环会是什么样的?
在为我们的应用程序中的每个循环更新for循环时,我遇到了很多这些"模式":
for (int i = 0, n = a.length; i < n; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
代替
for (int i = 0; i < a.length; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
我可以看到你获得了集合的性能,因为你不需要为每个循环调用size()方法.但是有阵列?
所以问题出现了:array.length比常规变量更贵?
是否可以使用'advanced'for循环在Java中初始化数组?
例如
Integer[ ] numbers = new Integer[20];
int counter = 0;
for ( Integer i : numbers )
{
i = counter++;
}
for ( Integer i : numbers )
{
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
这打印所有空值,为什么?
下面的代码没有达到我的预期.执行此代码后,每个字符串都为null.
String[] currentState = new String[answer.length()];
for(String x : currentState)
{
x = "_";
}
Run Code Online (Sandbox Code Playgroud)
下面的代码完成了我的期望.currentState中的每个字符串现在都是"_"
String[] currentState = new String[answer.length()];
for (int i = 0; i < currentState.length; i++) {
currentState[i] = "_";
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么第一个案例不起作用?
我试图制作一个代码来回答另一个人的问题......我出现了另一个问题.
这个想法是一个程序,要求你输入数字,以便对它们进行排序并从高到低打印出来.
这就是我的意思:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Input: ");
Integer input = new Integer(Integer.parseInt(scanner.nextLine()));
scanner.close();
Integer[] numbers = new Integer[input.toString().length()];
for (Integer value : numbers) {
while (input > 1) {
value = input % 10;
input /= 10;
}
}
Arrays.sort(numbers, Collections.reverseOrder());
int a = 0;
for (Integer value : numbers) {
if (a < numbers.toString().length()) {
System.out.print(value + ", ");
a++;
} else {
System.out.println(value + ".");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,作为 …