相关疑难解决方法(0)

不在声明中的数组初始化语法

我可以写:

AClass[] array = {object1, object2}
Run Code Online (Sandbox Code Playgroud)

我也可以写:

AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;
Run Code Online (Sandbox Code Playgroud)

但我不能写:

AClass[] array;
...
array = {object1, object2};
Run Code Online (Sandbox Code Playgroud)

为什么这会被Java阻止?

我知道如何解决它,但有时会更简单.

例如:

public void selectedPointsToMove(cpVect coord) {

    if (tab == null) {
        if (arePointsClose(coord, point1, 10)) {
            cpVect[] tempTab = {point1};
            tab = tempTab;
        } else if (arePointsClose(point2, coord, 10)) {
            cpVect[] tempTab = {point2};
            tab = tempTab;
        } else {
            cpVect[] tempTab = {point1,point2};
            tab = tempTab;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个简单的问题一直困扰着我,因为我学会了如何在Java中使用数组.

java arrays

139
推荐指数
3
解决办法
25万
查看次数

为什么数组常量只能用于初始值设定项?

可能重复:
数组常量只能用于初始值设定项错误

我正在研究数组,我通过这种在一行中声明和初始化数组的简短方法.例如,

int[] a = {1, 2, 3, 4, 5};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行以下代码时,我得到了这个编译器错误,说"数组常量只能在初始化程序中使用".

int[] a;
a = {1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)

为什么这样?

java

48
推荐指数
3
解决办法
6万
查看次数

为什么将{a,b,c}传递给方法不起作用?

我试图将初始化列表{...}传递给构造函数,但它不起作用.当我在一个方法局部变量(int [])中声明它时,它可以完美地工作.

这是为什么?

public class QuickSort {
    int[] a;

    public QuickSort(int[] a) {
        this.a = a;
    }

    public static void main(String[] args) {
        // ###################
        // ###    WORKS     ##
        // ###################
        int[] a = {8,12,79,12,50,44,8,0,7,289,1};
        QuickSort sort = new QuickSort(a);

        // ###################
        // ### DOESN'T WORK ##
        // ###################
        //QuickSort sort = new QuickSort({8,12,79,12,50,44,8,0,7,289,1});
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays syntax array-initialization

9
推荐指数
2
解决办法
896
查看次数

标签 统计

java ×3

arrays ×2

array-initialization ×1

syntax ×1