"เฮ้ เด็กใหม่ ผู้ซึ่งทำผิดพลาดมากมายทุกวัน แม้แต่ในโปรแกรมที่ง่ายที่สุด!

"อืม... สวัสดี ดิเอโก เจ้าหนู คุณรู้วิธีให้กำลังใจผู้คนจริงๆ!"

"แน่นอน ฉันรู้! เรียนรู้วิธีพูดในสิ่งที่จำเป็นต้องพูด อย่างที่ฉันพูด 'ทุกวัน' คำทักทายของฉันมีความหมายอย่างสุภาพกว่า "โปรแกรมเมอร์ที่ประสบความสำเร็จในอนาคต ถ้าคุณไม่เป่ามันทิ้งแน่นอน" "

“อือ ถ้าอย่างนั้นก็ขอบคุณ อาจารย์ที่เก่งกาจที่สุดของฉัน! .

"คุณจะขอบคุณฉันหลังจากบทเรียนนี้ ฉันจะแสดงรายการข้อผิดพลาดยอดนิยมที่คอมไพเลอร์จดบันทึกไว้ และงานของคุณคือจดจำ คำเตือนล่วงหน้ามีไว้ล่วงหน้า

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

"ข้อผิดพลาดที่พบบ่อยที่สุดสำหรับโปรแกรมเมอร์ 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?");

ลืมปิดใบเสนอราคา

"ข้อผิดพลาดที่พบบ่อยอันดับสองสำหรับผู้มาใหม่กับ 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.";

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

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

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

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
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);

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

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

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

"ทางเลือกที่สองคือสิ่งที่ฉันทำ บางครั้งฉันก็หลงไหลจนลืม!" .

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

ตัวอย่าง:

รหัสไม่ถูกต้อง รหัสที่ถูกต้อง
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!");
      }
   }
}

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

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

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

ความเป็นไปได้อีกอย่างคือพวกเขาลืมที่จะห่อเงื่อนไขของ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!");
   }
}

เขียนmainการประกาศวิธีการไม่ถูกต้อง

"ทันทีที่พวกเขาประกาศ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

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

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

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

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

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

Solution.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

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

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

   public static class Pineapple
   {
   }
}

ลืมเขียนpackage

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

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

"แน่นอน นี่คือตัวอย่าง:

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

public class Solution
{
}

ลืมใส่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และโปรแกรมของคุณจะไม่คอมไพล์"

"ขอบคุณ ดิเอโก บทเรียนนี้จะทำให้ฉันมีสมาธิมากขึ้น"

"นั่นคือสิ่งที่ฉันคาดหวัง โชคดี!"