"Hai, Amigo! Ayo kita terus ngomong babagan kesalahan. Wektu iki, kita bakal njelajah kesalahan sing ora bakal ditindakake dening penyusun.
"Aku siyap ngrungokake, Diego. Muga-muga iki ora dadi isin banget kanggo aku."
Mbandhingake obyek karo==
"Dhaptar kesalahan programmer pemula favorit kita diwiwiti kanthi mbandhingake obyek (utamane strings) nggunakake ==
operator"
Tuladha:
Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1 == s2)
{
System.out.println("The strings are equal");
}
"Aku wis rampung sing cukup asring. Saiki aku bisa ndeleng kanthi jelas yen kode iki ora bakal nampilake "Senar sing padha", amarga statement kasebut if
mbandhingake referensi kanggo rong obyek senar sing beda.
"Ya. Mulane pilihan sing bener yaiku:
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");
}
Ngganti String
obyek
"Programer anyar asring lali yen kabeh obyek kelas ora bisa diganti , lan saben metode kelas String
ngasilake obyek anyar - obyek saiki ora bakal diganti."
"Durung suwe aku ngerti apa tegese ora bisa diganti , nanging aku wis nindakake iki.
"Aku cukup yakin babagan iki. Tuladha:
String s = "Hello";
s.toUpperCase (); // Convert to uppercase
"Kode iki meh padha karo kode sing bener, nanging ora bisa kaya sing dikarepake. toUpperCase()
Cara kasebut ora ngganti obyek sing diarani. Kode sing bener bakal katon kaya iki:
String s = "Hello";
String result = s.toUpperCase(); // Convert to uppercase
"Pancen. Aku wis nglakoni, nanging aku ora ngerti apa sing salah. Matur nuwun kanggo klarifikasi!"
Lali kanggo initialize obyek sing unsur array
"Kesalahan umum liyane yaiku lali nginisialisasi variabel array. Conto:
int[] array;
array[0] = 1;
array[0] = 2;
"Kode iki ora bisa digunakake: sampeyan kudu kanthi tegas nyetel variabel array sing padha karo referensi kanggo obyek wadhah sing bakal nyimpen unsur array. Versi sing bener:
int[] array = new int[10];
array[0] = 1;
array[0] = 2;
Nggunakake variabel lokal tinimbang variabel conto.
"Newbies ora seneng nggawe jeneng sing dawa lan migunani kanggo variabel."
"Iku pancen bener. Kanggo nindakake kanthi cepet, aku kadang menehi jeneng variabel kaya a
, b
, lan i
."
"Aja nindakake iku. Iku bab kejem kanggo nindakake nalika kode wis sawetara variabel kaya:
Sijine nomer 99 menyang 100 sel saka array |
---|
|
"Luwih angel nggawe kesalahan ing kode kanthi jeneng sing tepat. Versi sing bener katon kaya iki:
Sijine nomer 99 menyang 100 sel saka array |
---|
|
Mbusak item koleksi
"Apa sampeyan wis ndeleng koleksi?"
"Secara harfiah kanthi mripat siji."
"Yen sampeyan ora ngerti apa sing dakkandhakake, banjur gawe cathetan dhewe kanggo ndeleng ing mangsa ngarep. Kerep banget ana kahanan nalika unsur tartamtu kudu dibusak saka koleksi. Kode katon kaya iki:
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);
"Kode iki ora bisa digunakake, amarga sampeyan ora bisa nggunakake for-each
loop kanggo bebarengan ngliwati unsur koleksi lan ngowahi koleksi kasebut.
"Ana sawetara solusi. Pisanan, sampeyan bisa ngliwati siji koleksi lan ngganti liyane:
Solusi 1 |
---|
|
"Kapindho, wiwit Java 8, koleksi duwe removeIf()
metode, sing sampeyan bisa ngliwati aturan (fungsi lambda) sing nuduhake unsur sing bakal dibusak. Conto:
Solusi 2 |
---|
|
Nyelehake sawetara kelas kanthi public
modifier menyang file siji
"Ana mung siji kelas umum ing file. Luwih akeh kelas bisa diumumake ing file, nanging kudu dadi kelas njero kelas umum, utawa ora duwe modifier. public
Conto:
Isi file Solution.java | Cathetan |
---|---|
|
Iki ora diidini: rong kelas umum ing file siji. |
|
Nanging sampeyan bisa nindakake iki. Kelas utama ora umum |
|
Lan sampeyan bisa nindakake iki. Kelas utama yaiku kelas nested |
Nelpon metode biasa (non-statis) saka kelas saka main()
metode statis
"Kadhangkala programer pemula nyoba ngakses variabel lan metode non-statis saka main()
metode utawa metode statis liyane. Kode kasebut ora bakal bisa digunakake, mesthi.
public class Solution
{
public int n = 100;
public int[] createArray()
{
return new int[n];
}
public static void main(String[]args)
{
int[] array = createArray();
}
}
" main
Cara kasebut mung bisa ngarujuk marang metode / variabel statis. Ya, utawa kudu nggawe conto Solution
kelas kasebut, banjur nelpon metode non-statis saka obyek kasebut. Conto:
Solusi 1 | Solusi 2 |
---|---|
|
|
Nyatakake konstruktor kaya metode
"Kesalahan umum liyane yaiku salah nyatakake konstruktor kelas. Jeneng konstruktor kudu padha karo jeneng kelas, lan konstruktor ora duwe jinis asil. Kesalahan sing paling umum katon kaya iki:
|
Mesthine ora ana jinis bali ing kene |
|
Jeneng konstruktor ora sah. Iku kudu cocog karo jeneng kelas |
|
this wis ilang. Variabel value bakal ditugasake dhewe |
|
Iku kabeh bener. |
Warisan antarmuka sing salah
"Pangripta Jawa nyoba nyedhak banget karo basa Inggris, mula dheweke milih tembung kunci sing beda kanggo konsep tartamtu sing ana gandhengane.
Nalika kelas marisi kelas, sampeyan kudu nggunakake extends
tembung kunci:
class Pet
{
}
class Cat extends Pet
{
}
"Nalika kelas marisi antarmuka, utawa, luwih tepat, ngleksanakake, sampeyan kudu nggunakake implements
tembung kunci:
interface Meow
{
}
class Cat implements Meow
{
}
"Nalika antarmuka marisi antarmuka, gunakake extends
tembung kunci:
interface Meow
{
}
interface Voice extends Meov
{
}
Ngilangi break
ing switch
statement
"Lan kesalahan pungkasan kanggo dina iki, nanging dudu sing pungkasan kanggo pamula, yaiku gagal nyakup statement break
ing switch
statement. Conto:
salah | bener |
---|---|
|
|
"Sampeyan ngerti, Diego.
"Ha! Aja mangu-mangu. Aku wis maca, nglacak, lan terus nglakoni. Dadi sing waspada!"
"???"
"Aja kuwatir. Aku mung guyon. Sing waspada lan kurangi kesalahan sing bodho."
GO TO FULL VERSION