相关疑难解决方法(0)

每个'循环的Java'如何工作?

考虑:

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 foreach syntactic-sugar

1446
推荐指数
25
解决办法
252万
查看次数

调用array.length的成本是多少

在为我们的应用程序中的每个循环更新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比常规变量更贵?

java arrays premature-optimization

51
推荐指数
4
解决办法
2万
查看次数

使用每个循环的"高级"在Java中初始化数组

是否可以使用'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)

这打印所有空值,为什么?

java foreach for-loop

21
推荐指数
1
解决办法
2万
查看次数

了解Java中的每个循环

下面的代码没有达到我的预期.执行此代码后,每个字符串都为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)

有人可以解释为什么第一个案例不起作用?

java foreach

14
推荐指数
2
解决办法
1万
查看次数

当我的Integer []已经初始化时,为什么会出现NullPointerException?

我试图制作一个代码来回答另一个人的问题......我出现了另一个问题.

这个想法是一个程序,要求你输入数字,以便对它们进行排序并从高到低打印出来.

这就是我的意思:

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)

但是,作为 …

java sorting nullpointerexception

0
推荐指数
1
解决办法
501
查看次数