Rumah >Java >javaTutorial >Bagaimanakah Sintaks Tugasan Array Java Berbeza Di Dalam dan Di Luar Pengisytiharan?

Bagaimanakah Sintaks Tugasan Array Java Berbeza Di Dalam dan Di Luar Pengisytiharan?

Barbara Streisand
Barbara Streisandasal
2024-12-30 03:10:13230semak imbas

How Does Java's Array Assignment Syntax Differ Inside and Outside of Declarations?

Sintaks Tugasan Tatasusunan Di Luar Pengisytiharan

Sintaks permulaan tatasusunan Java berbeza bergantung pada sama ada ia digunakan dalam pengisytiharan atau tugasan.

Memulakan dengan Tatasusunan Literals

Apabila mengisytiharkan tatasusunan, tatasusunan literals boleh digunakan untuk memulakan elemennya:

AClass[] array = {object1, object2};

Memulakan dengan Operator baharu

Di luar pengisytiharan, tatasusunan boleh dimulakan menggunakan operator baharu, diikuti dengan kiraan elemen dan tugasan seterusnya :

AClass[] array = new AClass[2];
array[0] = object1;
array[1] = object2;

Sekatan Sintaks: Menetapkan Huruf Array kepada Tidak Diisytiharkan Tatasusunan

Walau bagaimanapun, percubaan untuk menetapkan tatasusunan literal kepada pembolehubah tatasusunan yang tidak diisytiharkan adalah dilarang:

AClass[] array;
...
array = {object1, object2}; // Blocked by Java

Sekatan ini dikenakan oleh Java atas sebab yang mungkin tidak dapat dilihat dengan serta-merta.

Penyelesaian: Menggunakan Operator baharu dengan Array Literal

Sebagai penyelesaian, sintaks berikut boleh digunakan:

AClass[] array;
...
array = new AClass[]{object1, object2};

Pendekatan ini menggabungkan penciptaan tatasusunan dan permulaan ke dalam satu pernyataan sambil mematuhi peraturan sintaks Java.

Contoh

Sebagai contoh, pertimbangkan coretan kod berikut:

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;
        }
    }
}

Tanpa penyelesaian, kod memerlukan penyataan tambahan untuk memulakan tempTab sebelum menetapkannya pada tab.

Atas ialah kandungan terperinci Bagaimanakah Sintaks Tugasan Array Java Berbeza Di Dalam dan Di Luar Pengisytiharan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn