1. Membandingkan objek dengan==
Kesilapan kegemaran pengaturcara baru ialah membandingkan objek (terutama rentetan) menggunakan ==
operator. Sebagai contoh:
Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1 == s2)
{
System.out.println("The strings are equal");
}
Kod ini tidak akan sekali-kali memaparkan "Rentetan adalah sama", kerana if
pernyataan itu membandingkan rujukan kepada dua objek rentetan yang berbeza.
Berikut ialah versi kod yang betul:
Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1.equals(s2))
{
System.out.println("The strings are equal");
}
2. Menukar String
objek
Pengaturcara baru sering terlupa bahawa semua objek kelas tidak boleh diubah , dan setiap kaedah kelas String
mengembalikan objek baharu — objek semasa tidak pernah berubah.
Contoh:
String s = "Hello";
s.toUpperCase (); // Convert to uppercase
Kod ini sangat serupa dengan kod yang betul, tetapi ia tidak akan berfungsi seperti yang diharapkan. Kaedah ini toUpperCase()
tidak mengubah objek yang dipanggil. Kod yang betul akan kelihatan seperti ini:
String s = "Hello";
String result = s.toUpperCase(); // Convert to uppercase
3. Terlupa untuk memulakan objek yang merupakan elemen tatasusunan
Satu lagi kesilapan biasa ialah lupa untuk memulakan pembolehubah tatasusunan. Contoh:
int[] array;
array[0] = 1;
array[0] = 2;
Kod ini tidak akan berfungsi: anda perlu menetapkan pembolehubah tatasusunan secara eksplisit sama dengan rujukan kepada objek bekas yang akan menyimpan elemen tatasusunan.
int[] array = new int[10];
array[0] = 1;
array[0] = 2;
4. Menggunakan pembolehubah tempatan dan bukannya pembolehubah contoh.
Pemula tidak suka menghasilkan nama yang panjang dan bermakna untuk pembolehubah. Mereka kerap menggunakan nama satu huruf: a
, b
, i
, dsb. Itu adalah satu perkara yang kejam untuk dilakukan apabila kod tersebut mempunyai beberapa pembolehubah seperti itu:
Letakkan nombor 99 ke dalam 100 sel tatasusunan |
---|
|
Kod di atas tidak akan disusun. Versi yang betul kelihatan seperti ini:
Letakkan nombor 99 ke dalam 100 sel tatasusunan |
---|
|
5. Mengalih keluar item koleksi
Selalunya terdapat situasi apabila elemen tertentu perlu dialih keluar daripada koleksi. Kod kelihatan lebih kurang seperti ini:
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 0, -5, -7, -12, 5, 15);
for (Integer value: list)
if (value < 0)
list.remove(value);
Kod ini tidak akan berfungsi, kerana anda tidak boleh menggunakan gelung untuk setiap gelung untuk melintasi elemen koleksi dan mengubah suai koleksi itu secara serentak.
Terdapat beberapa penyelesaian. Pertama, anda boleh pergi melintasi satu koleksi dan menukar yang lain:
Penyelesaian 1 |
---|
|
Kedua, sejak Java 8, koleksi mempunyai removeIf()
kaedah, yang mana anda boleh lulus peraturan (fungsi lambda) yang menunjukkan elemen mana yang hendak dialih keluar.
Contoh:
Penyelesaian 2 |
---|
|
6. Meletakkan beberapa kelas dengan public
pengubah suai ke dalam satu fail
Hanya boleh ada satu kelas awam dalam fail. Lebih banyak kelas boleh diisytiharkan dalam fail, tetapi mereka mesti sama ada kelas dalaman kelas awam, atau tidak mempunyai pengubah public
suai. Contoh:
Kandungan fail Solution.java | Catatan |
---|---|
|
Ini tidak dibenarkan: dua kelas awam dalam satu fail. |
|
Tetapi anda boleh melakukan ini. Kelas Utama bukan awam |
|
Dan anda boleh melakukan ini. Kelas Utama ialah kelas bersarang |
7. Memanggil kaedah biasa (bukan statik) kelas daripada main()
kaedah statik
Kadangkala pengaturcara baru cuba mengakses pembolehubah dan kaedah bukan statik daripada main()
kaedah atau kaedah statik lain. Kod sedemikian tidak akan berfungsi, sudah tentu.
public class Solution
{
public int n = 100;
public int[] createArray()
{
return new int[n];
}
public static void main(String[]args)
{
int[] array = createArray();
}
}
Kaedah utama hanya boleh merujuk kepada kaedah/pembolehubah statik. Nah, atau ia mesti membuat contoh kelas Solution
, dan kemudian memanggil kaedah bukan statik objek itu. Contoh:
Penyelesaian 1 | Penyelesaian 2 |
---|---|
|
|
8. Mengisytiharkan pembina seperti kaedah
Satu lagi kesilapan biasa ialah mengisytiharkan pembina kelas secara salah. Nama pembina mestilah sama dengan nama kelas, dan pembina tidak mempunyai jenis hasil. Kesilapan yang paling biasa kelihatan seperti ini:
|
Tidak sepatutnya ada jenis pemulangan di sini |
|
Nama pembina tidak sah. Nama pembina mesti sepadan dengan nama kelas |
|
this sedang hilang. Pembolehubah value akan diberikan kepada dirinya sendiri |
|
Itu semua betul |
9. Warisan antara muka yang salah
Pencipta Java cuba menjadikannya sangat hampir dengan bahasa Inggeris, jadi mereka memilih kata kunci yang berbeza untuk konsep berkaitan tertentu.
Apabila kelas mewarisi kelas, anda perlu menggunakan extends
kata kunci:
class Pet
{
}
class Cat extends Pet
{
}
Apabila kelas mewarisi antara muka, anda perlu menggunakan implements
kata kunci:
interface Meow
{
}
class Cat implements Meow
{
}
Apabila antara muka mewarisi antara muka, gunakan extends
kata kunci:
interface Meow
{
}
interface Voice extends Meow
{
}
10. Meninggalkan break
dalam switch
kenyataan
Dan kesilapan terakhir untuk kita hari ini, tetapi bukan yang terakhir untuk pemula, adalah gagal memasukkan kenyataan break
dalam switch
kenyataan. Contoh
salah | Betul |
---|---|
|
|
GO TO FULL VERSION