1. Mbandhingake obyek karo==

Kesalahan favorit para programer pemula yaiku mbandhingake obyek (utamane strings) nggunakake ==operator. Tuladhane:

Scanner console = new Scanner(System.in);
String s1 = console.nextLine();
String s2 = console.nextLine();
if (s1 == s2)
{
   System.out.println("The strings are equal");
}

Kode iki ora bakal nampilake "Senar padha", amarga ifpernyataan kasebut mbandhingake referensi menyang rong obyek senar sing beda.

Iki versi kode sing bener:

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. Ngganti Stringobyek

Programer Newbie asring lali yen kabeh obyek saka kelas ora bisa diganti , lan saben metode kelas Stringngasilake obyek anyar - obyek sing saiki ora owah.

Tuladha:

String s = "Hello";
s.toUpperCase (); // Convert to uppercase

Kode iki meh padha karo kode sing bener, nanging ora bisa kaya sing dikarepake. Cara kasebut toUpperCase()ora ngganti obyek sing diarani. Kode sing bener bakal katon kaya iki:

String s = "Hello";
String result = s.toUpperCase(); // Convert to uppercase


3. Lali kanggo initialize obyek sing unsur Uploaded

Kesalahan umum liyane yaiku lali miwiti variabel array. Tuladha:

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.

int[] array = new int[10];
array[0] = 1;
array[0] = 2;


4. Nggunakake variabel lokal tinimbang variabel conto.

Newbies ora seneng nggawe jeneng sing dawa lan migunani kanggo variabel. Padha kerep nggunakake jeneng siji-huruf: a, b, i, etc. Sing kejem kanggo nindakake nalika kode wis sawetara variabel kaya:

Sijine nomer 99 menyang 100 sel saka array
class Solution
{
  public static int a = 99;
  public static int i = 100;

  public static void main(String[] args)
  {
    int[] a = new int[i];
    for (int i = 0; i < 10; i++)
    {
      a[i] = a;
    }
  }
}

Kode ing ndhuwur ora bakal dikompilasi. Versi sing bener katon kaya iki:

Sijine nomer 99 menyang 100 sel saka array
class Solution
{
   public static int value = 99;
   public static int count = 100;

   public static void main(String[] args)
   {
      int[] a = new int[count];
      for (int i = 0; i < count; i++)
      {
         a[i] = value;
      }
   }
}


5. Mbusak item koleksi

Kerep banget ana kahanan nalika unsur tartamtu kudu dibusak saka koleksi. Kode katon kira-kira 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 bakal bisa, amarga sampeyan ora bisa nggunakake kanggo saben daur ulang kanggo bebarengan ngliwati unsur koleksi lan ngowahi koleksi sing.

Ana sawetara solusi. Pisanan, sampeyan bisa ngliwati siji koleksi lan ngganti liyane:

Solusi 1
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 0, -5, -7, -12, 5, 15);

ArrayList<Integer> copy = new ArrayList<Integer>(list);
for (Integer value: copy)
   if (value < 0)
      list.remove(value);

Kapindho, wiwit Jawa 8, koleksi duwe removeIf()cara, sing sampeyan bisa ngliwati aturan (fungsi lambda) sing nuduhake unsur sing bakal dibusak.

Tuladha:

Solusi 2
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 0, -5, -7, -12, 5, 15);

list.removeIf( x-> x<0 );


6. Manggonke sawetara kelas karo publicmodifier menyang file siji

Mung ana siji kelas umum ing file. Kelas liyane bisa diumumake ing file, nanging kudu dadi kelas njero kelas umum, utawa ora duwe modifier public. Tuladha:

Isi file Solution.java Cathetan
public class Solution
{
}
public class Main
{
}
Iki ora diidini: rong kelas umum ing file siji.
public class Solution
{
}
class Main
{
}
Nanging sampeyan bisa nindakake iki. Kelas utama ora umum
public class Solution
{
  public static class Main
  {
  }
}
Lan sampeyan bisa nindakake iki. Kelas utama yaiku kelas nested


7. Nelpon cara biasa (non-statis) saka kelas saka main()cara statis

Kadhangkala programer pemula nyoba ngakses variabel lan metode non-statis saka main()metode utawa metode statis liyane. Kode kuwi ora bakal bisa, mesthi.

public class Solution
{
   public int n = 100;
   public int[] createArray()
   {
      return new int[n];
   }

   public static void main(String[]args)
   {
      int[] array = createArray();
   }
}

Cara utama mung bisa ngarujuk marang metode / variabel statis. Inggih, utawa kudu nggawe conto kelas Solution, lan mung nelpon cara non-statis obyek kasebut. Tuladha:

Solusi 1 Solusi 2
public class Solution
{
  public static int n = 100;

  public static int[] createArray()
  {
    return new int[n];
  }

  public static void main(String[]args)
  {
    int[] array = createArray();
  }
}
public class Solution
{
  public int n = 100;

  public int[] createArray()
  {
    return new int[n];
  }

  public static void main(String[]args)
  {
    Solution sol = new Solution();
    int[] array = sol.createArray();
  }
}


8. Ngandharake 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:

public class Person
{
   private String value;

   void Person(String value)
   {
      this.value = value;
   }
}




Mesthine ora ana jinis bali ing kene
public class Person
{
   private String value;

   constructor(String value)
   {
      this.value = value;
   }
}




Jeneng konstruktor ora valid. Jeneng konstruktor kudu cocog karo jeneng kelas
public class Person
{
   private String value;

   Person(String value)
   {
      value = value;
   }
}






this wis ilang. Variabel valuebakal ditugasake dhewe
public class Person
{
   private String value;

   Person(String value)
   {
      this.value = value;
   }
}




Iku kabeh bener


9. Warisan antarmuka sing salah

Para pangripta Jawa nyoba nyedhak banget karo basa Inggris, mula padha milih tembung kunci sing beda kanggo konsep-konsep tartamtu sing gegandhengan.

Nalika kelas marisi kelas, sampeyan kudu nggunakake extendstembung kunci:

class Pet
{
}

class Cat extends Pet
{
}

Nalika kelas diwenehi antarmuka, sampeyan kudu nggunakake implementstembung kunci:

interface Meow
{
}

class Cat implements Meow
{
}

Nalika antarmuka marisi antarmuka, gunakake extendstembung kunci:

interface Meow
{
}

interface Voice extends Meow
{
}


10. Ngilangi breaking switchstatement

Lan kesalahan pungkasan kanggo kita dina iki, nanging dudu sing pungkasan kanggo pamula, gagal kalebu statement breaking switchstatement. Tuladha

salah bener
LocalDate date = LocalDate.now();
DayOfWeek day = date.getDayOfWeek();
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
   case TUESDAY:
      System.out.println("Tuesday");
   case WEDNESDAY:
      System.out.println("Wednesday");
   case THURSDAY:
      System.out.println("Thursday");
   case FRIDAY:
      System.out.println("Friday");
   case SATURDAY:
      System.out.println("Saturday");
   case SUNDAY:
      System.out.println("Sunday");
}
LocalDate date = LocalDate.now();
DayOfWeek day = date.getDayOfWeek();
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
      break;
   case TUESDAY:
      System.out.println("Tuesday");
      break;
   case WEDNESDAY:
      System.out.println("Wednesday");
      break;
   case THURSDAY:
      System.out.println("Thursday");
      break;
   case FRIDAY:
      System.out.println("Friday");
      break;
   case SATURDAY:
      System.out.println("Saturday");
      break;
   case SUNDAY:
      System.out.println("Sunday");
      break;
}