1. Paghahambing ng mga bagay sa==
Ang paboritong pagkakamali ng mga newbie programmer ay ang paghahambing ng mga bagay (lalo na ang mga string) gamit ang ==
operator. Halimbawa:
Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1 == s2)
{
System.out.println("The strings are equal");
}
Hindi kailanman ipapakita ng code na ito ang "The strings are equal", dahil if
inihahambing ng statement ang mga reference sa dalawang magkaibang string object.
Narito ang tamang bersyon ng code:
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. Pagpapalit ng String
bagay
Ang mga baguhan na programmer ay madalas na nakakalimutan na ang lahat ng mga bagay ng klase ay hindi nababago , at ang bawat pamamaraan ng String
klase ay nagbabalik ng isang bagong bagay - ang kasalukuyang bagay ay hindi nagbabago.
Halimbawa:
String s = "Hello";
s.toUpperCase (); // Convert to uppercase
Ang code na ito ay halos kapareho sa tamang code, ngunit hindi ito gagana gaya ng inaasahan. Ang toUpperCase()
pamamaraan ay hindi nagbabago sa bagay kung saan ito tinawag. Ang tamang code ay magiging ganito:
String s = "Hello";
String result = s.toUpperCase(); // Convert to uppercase
3. Nakakalimutang simulan ang mga bagay na elemento ng isang array
Ang isa pang karaniwang pagkakamali ay ang kalimutang simulan ang isang array variable. Halimbawa:
int[] array;
array[0] = 1;
array[0] = 2;
Hindi gagana ang code na ito: kailangan mong tahasang itakda ang array variable na katumbas ng isang reference sa container object na mag-iimbak ng mga elemento ng array.
int[] array = new int[10];
array[0] = 1;
array[0] = 2;
4. Paggamit ng lokal na variable sa halip na isang instance variable.
Ang mga baguhan ay hindi gustong makabuo ng mahaba at makabuluhang mga pangalan para sa mga variable. Madalas silang gumagamit ng mga pangalan ng isang titik: a
, b
, i
, atbp. Iyon ay isang malupit na bagay na dapat gawin kapag ang code ay may ilang mga variable na tulad niyan:
Ilagay ang numero 99 sa 100 mga cell ng isang array |
---|
|
Ang code sa itaas ay hindi mag-compile. Ang tamang bersyon ay ganito ang hitsura:
Ilagay ang numero 99 sa 100 mga cell ng isang array |
---|
|
5. Pag-alis ng isang koleksyon ng item
Kadalasan mayroong mga sitwasyon kung kailan kailangang alisin ang isang partikular na elemento mula sa isang koleksyon. Ang code ay halos ganito:
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);
Hindi gagana ang code na ito, dahil hindi ka maaaring gumamit ng para sa bawat loop upang sabay-sabay na daanan ang mga elemento ng isang koleksyon at baguhin ang koleksyong iyon.
Mayroong ilang mga solusyon. Una, maaari kang dumaan sa isang koleksyon at baguhin ang isa pa:
Solusyon 1 |
---|
|
Pangalawa, mula noong Java 8, ang mga koleksyon ay may removeIf()
pamamaraan, kung saan maaari kang magpasa ng isang panuntunan (lambda function) na nagpapahiwatig kung aling mga elemento ang aalisin.
Halimbawa:
Solusyon 2 |
---|
|
6. Paglalagay ng ilang klase na may public
modifier sa isang file
Maaari lamang magkaroon ng isang pampublikong klase sa isang file. Higit pang mga klase ang maaaring ideklara sa isang file, ngunit dapat silang mga panloob na klase ng isang pampublikong klase, o walang public
modifier. Halimbawa:
Mga nilalaman ng Solution.java file | Tandaan |
---|---|
|
Hindi ito pinapayagan: dalawang pampublikong klase sa isang file. |
|
Ngunit magagawa mo ito. Ang Pangunahing klase ay hindi pampubliko |
|
At magagawa mo ito. Ang Main class ay isang nested class |
7. Pagtawag ng mga ordinaryong (non-static) na pamamaraan ng isang klase mula sa static main()
na pamamaraan
Minsan sinusubukan ng mga newbie programmer na i-access ang mga di-static na variable at pamamaraan mula sa main()
pamamaraan o iba pang mga static na pamamaraan. Ang naturang code ay hindi gagana, siyempre.
public class Solution
{
public int n = 100;
public int[] createArray()
{
return new int[n];
}
public static void main(String[]args)
{
int[] array = createArray();
}
}
Ang pangunahing pamamaraan ay maaari lamang sumangguni sa mga static na pamamaraan/mga variable. Buweno, o kailangan muna itong lumikha ng isang halimbawa ng Solution
klase, at pagkatapos lamang tumawag ng mga non-static na pamamaraan ng bagay na iyon. Halimbawa:
Solusyon 1 | Solusyon 2 |
---|---|
|
|
8. Pagdedeklara ng isang constructor tulad ng isang pamamaraan
Ang isa pang karaniwang pagkakamali ay ang maling pagdedeklara ng isang tagabuo ng klase. Ang pangalan ng isang constructor ay dapat na kapareho ng pangalan ng klase, at ang isang constructor ay walang uri ng resulta. Ang pinakakaraniwang pagkakamali ay ganito ang hitsura:
|
Hindi dapat magkaroon ng uri ng pagbabalik dito |
|
Di-wastong pangalan ng constructor. Ang pangalan ng constructor ay dapat tumugma sa pangalan ng klase |
|
this ay nawawala. Ang value variable ay itatalaga sa sarili nito |
|
Tama lahat yan |
9. Maling pamana ng mga interface
Sinubukan ng mga tagalikha ng Java na gawin itong napakalapit sa Ingles, kaya pumili sila ng iba't ibang mga keyword para sa ilang partikular na kaugnay na konsepto.
Kapag ang isang klase ay nagmana ng isang klase, kailangan mong gamitin ang extends
keyword:
class Pet
{
}
class Cat extends Pet
{
}
Kapag nagmana ang isang klase ng interface, kailangan mong gamitin ang implements
keyword:
interface Meow
{
}
class Cat implements Meow
{
}
Kapag ang isang interface ay nagmana ng isang interface, gamitin ang extends
keyword:
interface Meow
{
}
interface Voice extends Meow
{
}
10. Pag-alis break
sa isang switch
pahayag
At ang huling pagkakamali para sa atin ngayon, ngunit hindi ang huling pagkakamali para sa mga nagsisimula, ay ang hindi pagsasama ng isang break
pahayag sa isang switch
pahayag. Halimbawa
mali | Tama |
---|---|
|
|
GO TO FULL VERSION