1. ลืมเครื่องหมายอัฒภาค

ข้อผิดพลาดที่พบบ่อยที่สุดสำหรับโปรแกรมเมอร์ Java ที่เกี่ยวข้องกับเครื่องหมายอัฒภาค หรือค่อนข้างขาดในที่ที่ควรอยู่

ทุกคำสั่งภายในเมธอดต้องลงท้ายด้วยเครื่องหมายอัฒภาค เครื่องหมายอัฒภาคคือสิ่งที่แยกคำสั่งหรือคำสั่ง: นี่คือวิธีที่เราบอกคอมไพเลอร์ Java ที่คำสั่งหนึ่งสิ้นสุดและคำสั่งถัดไปเริ่มต้น

ตัวอย่างข้อผิดพลาด:

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
int a
int b = 5
int c = a + b
int a;
int b = 5;
int c = a + b;
System.out.println("Hello")
System.out.println("Hello");
if (2 > 3)
   System.out.println("Are we in Australia?")
if (2 > 3)
   System.out.println("Are we in Australia?");


2. ลืมปิดคำพูด

ข้อผิดพลาดที่พบบ่อยอันดับสองสำหรับผู้มาใหม่กับ Java คือการเขียนสตริงในโค้ดแล้วลืมปิดเครื่องหมายคำพูด

ทุกตัวอักษรของสตริงในโค้ดต้องใส่เครื่องหมายอัญประกาศคู่ (") ทั้งสองด้าน โปรแกรมเมอร์มือใหม่มักจะใส่เครื่องหมายอัญประกาศไว้หน้าข้อความแต่ลืมปิดตอนท้าย

นี่คือตัวอย่างบางส่วน:

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
String s = "Hello;
String s = "Hello";
System.out.println("Hello);
System.out.println("Hello");
String s = "Hello";
String message = s + " and by. ;
String s = "Hello";
String message = s + " and bye.";


3. ลืมใส่เครื่องหมายบวกเมื่อติดกาวเข้าด้วยกัน

ข้อผิดพลาดทั่วไปอีกประการหนึ่งเมื่อทำงานกับสตริงคือการลืมเขียนเครื่องหมายบวกเมื่อติดสตริงเข้าด้วยกัน ข้อผิดพลาดนี้เกิดขึ้นบ่อยเป็นพิเศษเมื่อข้อความและตัวแปรเชื่อมกันเป็นนิพจน์แบบยาวในโค้ด

นี่คือตัวอย่างบางส่วน:

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
String s = "Hello";
String message = s  " and bye.";
String s = "Hello";
String message = s + " and bye.";
int age = 35;
System.out.println("Age=" age);
int age = 35;
System.out.println("Age=" + age);
int age = 35;
System.out.println("Age=", age);
int age = 35;
System.out.println("Age=" + age);


4. ลืมปิดวงเล็บปีกกา

นี่เป็นข้อผิดพลาดทั่วไป มีสองสถานการณ์ที่เป็นเรื่องปกติ:

สถานการณ์แรก: คุณตัดสินใจคัดลอกโค้ดจากที่ไหนสักแห่งและพลาดวงเล็บปีกกาไปโดยไม่ได้ตั้งใจ สถานการณ์ที่สอง: คุณเพียงแค่ไม่สร้างปัญหาให้ตัวเองเพื่อให้แน่ใจว่าวงเล็บเปิดทุกวงเล็บตรงกับวงเล็บปิด

เพื่อหลีกเลี่ยงข้อผิดพลาดเหล่านี้ มักจะแนะนำให้โปรแกรมเมอร์มือใหม่เขียนวงเล็บปีกกาปิดไว้ข้างใต้วงเล็บปีกกาเปิด

ตัวอย่าง:

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
}


5. ลืมใส่วงเล็บ

ข้อผิดพลาดนี้ส่วนใหญ่มักเกิดจากนักพัฒนาซอฟต์แวร์ที่รู้ภาษาการเขียนโปรแกรมที่ไม่ต้องใช้วงเล็บในสถานการณ์ที่คล้ายคลึงกัน

ความเป็นไปได้อย่างหนึ่งคือพวกเขาลืมใส่วงเล็บที่ส่วนท้ายของเมธอด:

ความเป็นไปได้อีกอย่างคือพวกเขาลืมที่จะห่อเงื่อนไขของif-elseคำสั่งในวงเล็บ

ตัวอย่าง:

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
System.out.println("Hello!");
System.out.println;
System.out.println("And bye!");
System.out.println("Hello!");
System.out.println();
System.out.println("And bye!");
if 2 < 3
{
   if 3 < 4
   {
      System.out.println("Mathematics!");
   }
}
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}


6. การเขียนmainการประกาศ method ไม่ถูกต้อง

ทันทีที่พวกเขาประกาศmainวิธีการนองเลือด! อาจไม่มีอะไรที่ทำให้มือใหม่สะดุดได้เท่ากับวิธีการแย่ๆ นี้ ที่สำคัญพวกเขามักจะแปลกใจและสงสัยว่าทำไมรายการของพวกเขาถึงไม่เริ่ม?

และแน่นอนว่าไม่ต้องโทษโปรแกรมเมอร์ แต่โทษโปรแกรม คอมไพเลอร์ ตัวตรวจสอบโค้ด เครื่อง Java ฯลฯ รายชื่อแพะรับบาปไม่มีที่สิ้นสุด

ตัวอย่าง:

รหัสไม่ถูกต้อง คำอธิบาย
static void main(String[] args)
publicที่ขาดหายไป
public void main(String[] args)
staticที่ขาดหายไป
public main(String[] args)
voidที่ขาดหายไป
void main(String[] args)
publicและstaticขาดหายไป
public static void main(String args)
[]ที่ขาดหายไป
public static void main()
String[] argsที่ขาดหายไป
public static int main(String[] args)
เรามีintแทนvoid


7. ชื่อไฟล์แตกต่างจากชื่อคลาส

ตามมาตรฐาน Java คลาส Java ทั้งหมดต้องเก็บไว้ในไฟล์ที่มีชื่อเดียวกับชื่อคลาส และดังที่ได้กล่าวไว้ก่อนหน้านี้ กรณีของจดหมายมีความสำคัญที่นี่:

ชื่อไฟล์ ชื่อชั้น บันทึก
Solution.java
Solution
ทุกอย่างปกติดี
Solutions.java
Solution
ชื่อไฟล์มีตัวอักษรที่ไม่จำเป็นs
solution.java
Solution
ชื่อไฟล์ขึ้นต้นด้วยตัวพิมพ์เล็ก
Solution.txt
Solution
นามสกุลไฟล์.txtแทน.java
Solution.java
solution
ชื่อคลาสขึ้นต้นด้วยตัวพิมพ์เล็ก

ที่จริงแล้ว สามารถประกาศคลาสได้หลายคลาสในไฟล์ที่มีนามสกุล .java แต่มีเพียงคลาสเดียวเท่านั้นที่สามารถมีคำนำpublicหน้าชื่อคลาสได้ และนี่คือชื่อที่ต้องตรงกับชื่อไฟล์

ไฟล์ .java ต้องมีคลาสที่มีชื่อเหมือนกับชื่อไฟล์เสมอ และคลาสนั้นจำเป็นต้องมีตัวpublicแก้ไข ตัวอย่าง:

Solution.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

นอกจากนี้ ภาษา Java ให้คุณเขียนคลาสภายในคลาสได้ นี่เป็นอีกวิธีหนึ่งในการหลีกเลี่ยงข้อจำกัดข้างต้น หากมีการประกาศคลาสสาธารณะ (คลาสที่มีpublicตัวดัดแปลง) ในไฟล์และมีชื่อเดียวกับชื่อไฟล์ คุณสามารถประกาศคลาสได้มากเท่าที่คุณต้องการภายในคลาสสาธารณะนี้ ที่กล่าวว่าพวกเขาจะไม่ใช่ชั้นเรียนธรรมดาอีกต่อไป แต่จะเป็นคลาสภายในหรือคลาสซ้อนกันแทน ตัวอย่าง:

Solution.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}


8. ลืมที่จะเขียนpackage

เนื่องจากโปรแกรมมักจะมีคลาสเป็นพันๆ คลาส จึงเป็นเรื่องยากที่จะหาชื่อที่เรียบง่าย เข้าใจได้ และไม่ซ้ำกันสำหรับทุกคลาส นั่นเป็นเหตุผลที่ใน Java เป็นเรื่องปกติที่จะจัดกลุ่มคลาสเป็นแพ็คเกจโดยใช้packageคำสำคัญ วิธีการจัดกลุ่มไฟล์เป็นโฟลเดอร์

นั่นเป็นเหตุผลที่แต่ละคลาสควรเริ่มต้นด้วยการระบุแพ็คเกจที่เป็นของ ตัวอย่าง

รหัสไม่มีแพ็คเกจ ตัวอย่างที่แก้ไขแล้ว
public class Solution
{
}
package com.codegym.tasks.task0001;

public class Solution
{
}


9. ลืมใส่import

ถ้าเราต้องการใช้คลาสของคนอื่นในโปรแกรมของเรา เรามีสองทางเลือก: ทุกที่ในโค้ดของเรา เราต้องเขียนชื่อแพ็คเกจก่อนชื่อคลาสด้วย อีกทางหนึ่ง เราสามารถเขียนชื่อคลาสแบบเต็มด้วยimportคีย์เวิร์ดครั้งเดียว

ตัวอย่าง:

โดยไม่ต้องใช้การนำเข้า โดยใช้การนำเข้า
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

public class Solution
{
   Scanner console = new Scanner();
}

ทั้งสองตัวเลือกทำงานได้ แต่ถ้าคุณเพียงแค่เขียนScannerโค้ดของคุณโดยไม่เพิ่มimportคอมไพลเลอร์จะไม่สามารถเข้าใจได้ว่าต้องใช้แพ็คเกจใดในคลาสScannerและโปรแกรมของคุณจะไม่คอมไพล์