1. Quên dấu chấm phẩy

Lỗi phổ biến nhất mà các lập trình viên Java khao khát mắc phải liên quan đến dấu chấm phẩy. Hay đúng hơn, sự vắng mặt của nó ở nơi đáng lẽ phải có.

Mọi câu lệnh bên trong một phương thức phải kết thúc bằng dấu chấm phẩy. Dấu chấm phẩy là thứ phân tách các câu lệnh hoặc lệnh: đây là cách chúng tôi báo cho trình biên dịch Java nơi một lệnh kết thúc và lệnh tiếp theo bắt đầu.

Ví dụ về lỗi:

mã không chính xác đúng mã
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. Quên đóng ngoặc kép

Lỗi phổ biến thứ hai đối với những người mới làm quen với Java là viết một chuỗi trong mã và sau đó quên đóng dấu ngoặc kép.

Mỗi chuỗi ký tự trong mã phải được đặt ở cả hai bên bằng dấu ngoặc kép ("). Những lập trình viên mới bắt đầu thường đặt dấu ngoặc kép ở đầu văn bản nhưng họ lại quên đóng chúng ở cuối.

Dưới đây là một số ví dụ:

mã không chính xác đúng mã
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. Quên thêm dấu cộng khi dán dây

Một lỗi phổ biến khác khi làm việc với các chuỗi là quên viết dấu cộng khi dán các chuỗi lại với nhau. Lỗi này đặc biệt phổ biến khi văn bản và biến được nối trong một biểu thức dài trong mã.

Dưới đây là một số ví dụ:

mã không chính xác đúng mã
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. Quên đóng dấu ngoặc nhọn

Đây là một sai lầm rất phổ biến. Có hai tình huống mà điều này là điển hình:

Tình huống đầu tiên: Bạn quyết định sao chép mã từ đâu đó và vô tình bỏ lỡ một số dấu ngoặc nhọn. Tình huống thứ hai: Đơn giản là bạn không bận tâm đến việc đảm bảo rằng mọi dấu ngoặc đơn mở đều khớp với dấu ngoặc đơn đóng.

Để tránh những lỗi này, các lập trình viên mới bắt đầu thường được khuyến nghị viết dấu ngoặc nhọn đóng bên dưới dấu mở đầu.

Ví dụ:

mã không chính xác đúng mã
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. Quên thêm dấu ngoặc đơn

Thông thường, lỗi này được thực hiện bởi các nhà phát triển biết các ngôn ngữ lập trình không yêu cầu dấu ngoặc đơn trong các tình huống tương tự.

Một khả năng là họ quên đặt dấu ngoặc đơn ở cuối lời gọi phương thức:

Một khả năng khác là họ quên đặt điều kiện của một if-elsecâu lệnh trong ngoặc đơn.

Ví dụ:

mã không chính xác đúng mã
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. Viết mainsai phần khai báo phương thức

Ngay sau khi họ tuyên bố mainphương pháp đẫm máu! Có lẽ không có gì khiến người mới vấp ngã nhiều như phương pháp tồi tệ này. Quan trọng là sau đó họ luôn ngạc nhiên và tự hỏi tại sao chương trình của họ không bắt đầu?

Và, tất nhiên, lập trình viên không có lỗi, mà là lỗi của chương trình, trình biên dịch, trình xác thực mã, máy Java, v.v. Danh sách những kẻ tế thần là vô tận.

Ví dụ:

mã không chính xác Giải trình
static void main(String[] args)
publicmất tích
public void main(String[] args)
staticmất tích
public main(String[] args)
voidmất tích
void main(String[] args)
publicstaticđang mất tích
public static void main(String args)
[]mất tích
public static void main()
String[] argsmất tích
public static int main(String[] args)
Chúng tôi có intthay vìvoid


7. Tên tệp khác với tên lớp

Theo tiêu chuẩn Java, tất cả các lớp Java phải được lưu trữ trong một tệp có tên trùng với tên lớp. Và như đã đề cập trước đó, trường hợp của các chữ cái quan trọng ở đây:

tên tệp Tên lớp Ghi chú
Solution.java
Solution
Mọi thứ đều ổn
Solutions.java
Solution
Tên tệp có một ký tự thừas
solution.java
Solution
Tên tệp bắt đầu bằng một chữ thường
Solution.txt
Solution
Phần mở rộng tệp .txtthay vì.java
Solution.java
solution
Tên lớp bắt đầu bằng một chữ thường

Trên thực tế, một số lớp có thể được khai báo trong một tệp có phần mở rộng .java, nhưng chỉ một trong số chúng có thể có từ publictrước tên lớp. Và đây là tên phải trùng với tên tệp.

Tệp .java phải luôn có một lớp có tên giống với tên tệp và lớp đó cần phải có công publiccụ sửa đổi. Ví dụ:

Giải pháp.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

Ngoài ra, ngôn ngữ Java cho phép bạn viết các lớp bên trong các lớp. Đây là một cách khác để vượt qua giới hạn trên. Nếu một lớp công khai (một lớp có công publiccụ sửa đổi) được khai báo trong một tệp và có cùng tên với tên tệp, thì bạn có thể khai báo bao nhiêu lớp tùy thích bên trong lớp công khai này. Điều đó nói rằng, đây sẽ không còn là lớp học bình thường. Thay vào đó, chúng sẽ là các lớp nội bộ hoặc lồng nhau. Ví dụ:

Giải pháp.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}


8. Quên viếtpackage

Vì các chương trình thường có hàng nghìn lớp nên khó có thể tìm được các tên đơn giản, dễ hiểu và duy nhất cho tất cả chúng. Đó là lý do tại sao trong Java, người ta thường nhóm các lớp thành các gói bằng cách sử dụng packagetừ khóa. Chính xác là cách các tập tin được nhóm vào các thư mục.

Đó là lý do tại sao mỗi lớp nên bắt đầu bằng một dấu hiệu của gói mà nó thuộc về. Ví dụ

Mã không có gói Ví dụ đã sửa
public class Solution
{
}
package com.codegym.tasks.task0001;

public class Solution
{
}


9. Quên thêmimport

Nếu chúng ta muốn sử dụng lớp của người khác trong chương trình của mình, chúng ta có hai lựa chọn: ở mọi nơi trong mã của chúng ta, chúng ta cũng phải viết tên gói của nó trước tên của lớp. Ngoài ra, chúng ta có thể viết tên lớp đủ điều kiện với importtừ khóa một lần.

Ví dụ:

Không sử dụng nhập khẩu Sử dụng nhập khẩu
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

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

Cả hai tùy chọn đều hoạt động, nhưng nếu bạn chỉ viết Scannermã của mình mà không thêm import, thì trình biên dịch sẽ không thể hiểu nó cần lấy lớp từ gói nào Scannervà chương trình của bạn sẽ không biên dịch được.