Ngôn ngữ lập trình Java là một trong những ngôn ngữ phổ biến nhất hiện nay. Với đặc điểm linh hoạt, dễ học và có khả năng chạy trên nhiều nền tảng khác nhau, Java được sử dụng rộng rãi trong nhiều lĩnh vực như phát triển ứng dụng web, di động, máy tính và game.
Trong bài viết này, chúng ta sẽ tìm hiểu về cú pháp của ngôn ngữ Java, bao gồm các khái niệm cơ bản, cách khai báo biến, cấu trúc câu lệnh, hàm và phương thức, lớp và đối tượng, giao diện và xử lý ngoại lệ.
Giới thiệu về ngôn ngữ Java
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) được phát triển bởi Sun Microsystems vào năm 1995. Nó được lấy cảm hứng từ ngôn ngữ C++ và có cú pháp giống nhau với C++. Tuy nhiên, Java loại bỏ các tính năng phức tạp của C++ như con trỏ và đa kế thừa, giúp cho việc học và sử dụng ngôn ngữ này dễ dàng hơn.
Một trong những đặc điểm nổi bật của Java là tính di động. Điều này có nghĩa là các ứng dụng được viết bằng Java có thể chạy trên nhiều nền tảng khác nhau mà không cần thay đổi mã nguồn. Điều này làm cho Java trở thành ngôn ngữ lập trình phổ biến trong lĩnh vực ứng dụng di động và web, nơi các ứng dụng cần phải chạy trên nhiều thiết bị và hệ điều hành khác nhau.
Cú pháp cơ bản trong Java
Cú pháp là quy tắc và cách sử dụng các từ, ký tự và cấu trúc trong một ngôn ngữ. Trong Java, chúng ta cần tuân thủ cú pháp để viết mã nguồn đúng và có thể biên dịch thành chương trình chạy được.
Tên biến và hằng số
Trong Java, tên biến và hằng số cần tuân thủ các quy tắc sau:
-
Bắt đầu bằng một ký tự chữ cái hoặc dấu gạch dưới (_).
-
Không được bắt đầu bằng một ký tự số.
-
Chỉ được sử dụng các ký tự chữ cái, số và dấu gạch dưới.
-
Không được sử dụng các từ khóa như if, for hay class làm tên biến.
-
Phân biệt chữ hoa và chữ thường.
-
Ví dụ về tên biến hợp lệ: tenBien1, _ten_bien_2, tenBien3.
Quy ước đặt tên
Đặt tên biến và hằng số theo quy ước có thể giúp cho mã nguồn dễ đọc và dễ hiểu hơn. Một số quy ước thông dụng khi đặt tên trong Java là:
-
Sử dụng chữ cái viết hoa cho các từ tiếp theo trong tên biến: tenBienTrongJava.
-
Các hằng số được viết hoa toàn bộ và cách nhau bởi dấu gạch dưới: TEN_HANG_SO.
-
Đặt tên biến mô tả đầy đủ chức năng của biến.
-
Tránh sử dụng tên biến quá ngắn như x hoặc y.
-
Đặt tên biến bằng tiếng Anh hoặc sử dụng tiếng Việt có dấu (khi viết mã nguồn trực tiếp bằng máy tính có hỗ trợ).
-
Dấu chấm phẩy và dấu ngoặc
Mỗi câu lệnh trong Java kết thúc bằng dấu chấm phẩy (;). Dấu chấm phẩy dùng để phân tách các câu lệnh và cho biết câu lệnh kết thúc ở đâu. Ví dụ:
int a = 5;
String name = "John";
System.out.println(name);
Trong đoạn mã này, chúng ta sử dụng dấu chấm phẩy để phân tách ba câu lệnh khác nhau.
Ngoài ra, trong Java ta cần sử dụng các cặp dấu ngoặc đơn (') hoặc hai dấu ngoặc kép (") để bao quanh giá trị của kiểu dữ liệu char và String:
char myChar = 'a';
String myString = "Hello";
Khối lệnh
Trong Java, một khối lệnh là một tập hợp các câu lệnh được gạch nối bởi dấu ngoặc nhọn ({}) và được thực thi cùng nhau. Ví dụ:
public class MyClass {
public static void main(String[] args) {
int a = 5;
if (a > 2) {
System.out.println("a is greater than 2");
System.out.println("and it is true");
}
}
}
Trong đoạn mã này, chúng ta sử dụng khối lệnh để nhóm hai câu lệnh System.out.println() lại với nhau. Khối lệnh cũng có thể được sử dụng với các cấu trúc điều khiển khác như vòng lặp hay câu lệnh else.
Biến và kiểu dữ liệu trong Java
Biến là một vùng nhớ trong bộ nhớ được sử dụng để lưu trữ các giá trị trong quá trình thực thi chương trình. Trong Java, mỗi biến được khai báo với một kiểu dữ liệu cụ thể và có thể được gán giá trị sau đó.
Các kiểu dữ liệu cơ bản
Trong Java, có các kiểu dữ liệu cơ bản sau:
<table>
<thead>
<tr>
<th>Kiểu dữ liệu</th>
<th>Giải thích</th>
<th>Ví dụ</th>
</tr>
</thead>
<tbody>
<tr>
<td>int</td>
<td>Lưu trữ số nguyên không có phần thập phân</td>
<td><code>int myNumber = 5;</code></td>
</tr>
<tr>
<td>double</td>
<td>Lưu trữ số thực có phần thập phân</td>
<td><code>double myDecimal = 3.14;</code></td>
</tr>
<tr>
<td>boolean</td>
<td>Lưu trữ giá trị đúng (true) hoặc sai (false)</td>
<td><code>boolean myAnswer = true;</code></td>
</tr>
<tr>
<td>char</td>
<td>Lưu trữ một ký tự</td>
<td><code>char myLetter = 'a';</code></td>
</tr>
<tr>
<td>String</td>
<td>Lưu trữ một chuỗi các ký tự</td>
<td><code>String myName = "John";</code></td>
</tr>
</tbody>
</table>
Khai báo biến
Để khai báo một biến trong Java, chúng ta sử dụng cú pháp sau:
<kiểu dữ liệu> <tên biến>;
Ví dụ:
int myNumber;
double myDecimal;
boolean myAnswer;
char myLetter;
String myName;
Tuy nhiên, khi khai báo biến, chúng ta cũng có thể gán giá trị ban đầu cho biến đó như sau:
<kiểu dữ liệu> <tên biến> = <giá trị ban đầu>;
Ví dụ:
int myNumber = 5;
double myDecimal = 3.14;
boolean myAnswer = true;
char myLetter = 'a';
String myName = "John";
Phạm vi của biến
Phạm vi của biến trong Java là vùng mà biến đó có thể được truy cập và sử dụng. Trong Java, có ba loại biến với phạm vi khác nhau:
-
Biến cục bộ (local variables): Là biến được khai báo trong một phương thức hoặc khối lệnh và chỉ có thể truy cập từ bên trong khối lệnh đó.
-
Biến toàn cục (global variables): Là biến được khai báo bên ngoài phương thức và có thể truy cập từ bất kỳ đâu trong lớp.
-
Tham số (parameters): Là biến được sử dụng để truyền giá trị vào phương thức và chỉ có thể truy cập từ bên trong phương thức.
Hằng số
Hằng số là một giá trị không thay đổi trong suốt quá trình chạy của chương trình. Trong Java, chúng ta có thể sử dụng từ khóa final để khai báo một hằng số. Ví dụ:
final int PI = 3.14;
Với việc sử dụng final, giá trị của hằng số này không thể thay đổi trong quá trình thực thi chương trình. Điều này giúp cho mã nguồn được bảo vệ và tránh các lỗi gán giá trị sai cho hằng số.
Câu lệnh điều khiển trong Java
Câu lệnh điều khiển là các câu lệnh cho phép chương trình thực hiện một loạt các hành động khác nhau dựa trên điều kiện được xác định. Trong Java, có ba loại câu lệnh điều khiển chính là if, switch và for.
Câu lệnh if
Câu lệnh if cho phép chương trình thực hiện một hành động nếu điều kiện được xác định là đúng. Cú pháp của câu lệnh if như sau:
if (<điều kiện>) {
// code sẽ được thực thi nếu điều kiện đúng
}
Ví dụ:
int a = 5;
if (a > 2) {
System.out.println("a is greater than 2");
}
Trong ví dụ này, chúng ta chỉ in ra thông báo nếu biến a có giá trị lớn hơn 2.
Ngoài ra, chúng ta cũng có thể sử dụng câu lệnh if-else để thực thi một hành động khi điều kiện đúng và một hành động khác khi điều kiện sai:
int a = 5;
if (a > 10) {
System.out.println("a is greater than 10");
} else {
System.out.println("a is less than or equal to 10");
}
Câu lệnh switch
Câu lệnh switch cho phép chương trình thực hiện một hành động khác nhau dựa trên các trường hợp (case) được xác định. Cú pháp của câu lệnh switch như sau:
switch (<biến>) {
case <giá trị 1>:
// code sẽ được thực thi nếu biến có giá trị bằng <giá trị 1>
break;
case <giá trị 2>:
// code sẽ được thực thi nếu biến có giá trị bằng <giá trị 2>
break;
...
default:
// code sẽ được thực thi nếu biến không khớp với bất kỳ trường hợp nào
}
Ví dụ:
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "Sunday";
break;
case 2:
dayName = "Monday";
break;
case 3:
dayName = "Tuesday";
break;
case 4:
dayName = "Wednesday";
break;
case 5:
dayName = "Thursday";
Vòng lặp trong Java
Trong lập trình, vòng lặp là một cấu trúc cho phép thực hiện một khối lệnh nhiều lần. Trong Java, có ba loại vòng lặp phổ biến là `for`, `while`, và `do-while`.
Vòng lặp for
Vòng lặp `for` được sử dụng khi số lần lặp cụ thể đã biết trước. Cú pháp của vòng lặp `for` như sau:
java for (khởi tạo; điều kiện; bước nhảy) {
// các câu lệnh cần thực thi
}
Ví dụ:
java for (int i = 0; i < 5; i++) {
System.out.println(i);
}
Trong ví dụ này, chương trình sẽ in ra các số từ 0 đến 4.
Vòng lặp while
Vòng lặp `while` được sử dụng khi số lần lặp không xác định trước. Cú pháp của vòng lặp `while` như sau:
java while (điều kiện) {
// các câu lệnh cần thực thi
}
Ví dụ:
java int i = 0; while (i < 5) {
System.out.println(i);
i++;
}
Trong ví dụ này, chương trình sẽ in ra các số từ 0 đến 4.
Vòng lặp do-while
Vòng lặp `do-while` tương tự như vòng lặp `while`, nhưng khối lệnh sẽ được thực thi ít nhất một lần trước khi kiểm tra điều kiện. Cú pháp của vòng lặp `do-while` như sau:
java do {
// các câu lệnh cần thực thi
} while (điều kiện);
Ví dụ:
java int i = 0; do {
System.out.println(i);
i++;
} while (i < 5);
Trong ví dụ này, chương trình cũng sẽ in ra các số từ 0 đến 4.
### Lệnh break và continue
Trong vòng lặp, `break` được sử dụng để kết thúc vòng lặp ngay lập tức, trong khi `continue` được sử dụng để bỏ qua phần còn lại của vòng lặp và tiếp tục với lần lặp tiếp theo.
Ví dụ sử dụng `break`:
java for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
Trong ví dụ này, vòng lặp sẽ kết thúc khi `i` đạt giá trị 5.
Ví dụ sử dụng `continue`:
java for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
Trong ví dụ này, các số chẵn sẽ bị bỏ qua và chỉ in ra các số lẻ.
## Hàm và phương thức trong Java
Trong Java, hàm và phương thức đều là các khối mã được sử dụng để thực hiện một công việc cụ thể. Chúng ta sẽ tìm hiểu sự khác biệt giữa hàm và phương thức, cách khai báo và sử dụng chúng.
Hàm và phương thức là gì?
Hàm (function): đây là thuật ngữ được sử dụng trong ngôn ngữ lập trình khác nhau để chỉ một khối mã thực hiện một công việc cụ thể. Trong Java, hàm thường được sử dụng để thực hiện các tính toán hoặc xử lý dữ liệu.
Phương thức (method): trái ngược với hàm, phương thức là thuật ngữ dành riêng cho các khối mã được định nghĩa bên trong một lớp. Mọi chương trình Java đều bắt đầu từ một phương thức gọi là main.
Khai báo và sử dụng hàm
Để khai báo một hàm trong Java, chúng ta sử dụng cú pháp sau:
java <kiểu dữ liệu trả về> <tên hàm>(<danh sách tham số>) {
// các câu lệnh trong hàm
return <giá trị trả về>;
}
Ví dụ:
java public static int add(int a, int b) {
return a + b;
}
Trong ví dụ này, hàm `add` nhận hai tham số là `a` và `b`, thực hiện phép cộng và trả về kết quả.
Khai báo và sử dụng phương thức
Để khai báo một phương thức trong Java, chúng ta sử dụng cú pháp sau:
java <phạm vi truy cập> <kiểu dữ liệu trả về> <tên phương thức>(<danh sách tham số>) {
// các câu lệnh trong phương thức
return <giá trị trả về>;
}
Ví dụ:
java public void greet() {
System.out.println("Hello, World!");
}
Trong ví dụ này, phương thức `greet` không trả về giá trị nào, chỉ in ra một thông điệp chào.
Lớp và đối tượng trong Java
Trong lập trình hướng đối tượng, lớp và đối tượng là hai khái niệm quan trọng. Lớp được coi là bản thiết kế cho các đối tượng, trong khi đối tượng là một thể hiện cụ thể của lớp.
Lớp trong Java
Định nghĩa: Lớp trong Java là một mô hình hoặc bản thiết kế để tạo ra các đối tượng. Nó chứa các thuộc tính (biến) và phương thức (hàm) để xử lý dữ liệu.
Ví dụ: Dưới đây là một ví dụ về lớp trong Java:
java public class Car {
String color;
int year;
public void start() {
System.out.println("Car is starting...");
}
}
Trong ví dụ này, lớp `Car` có hai thuộc tính `color` và `year`, cùng một phương thức `start`.
Đối tượng trong Java
Định nghĩa: Đối tượng trong Java là một thể hiện cụ thể của một lớp. Khi một đối tượng được tạo, nó sẽ có trạng thái (giá trị của các thuộc tính) và hành vi (các phương thức).
Ví dụ: Dưới đây là cách tạo đối tượng từ lớp Car:
java Car myCar = new Car(); myCar.color = "Red"; myCar.year = 2020; myCar.start();
Trong ví dụ này, `myCar` là một đối tượng của lớp `Car` với màu đỏ, năm sản xuất là 2020, và khi gọi phương thức `start`, thông điệp "Car is starting..." sẽ được in ra.
Kết luận: trong bài viết này, chúng ta đã tìm hiểu về ngôn ngữ lập trình Java, cú pháp cơ bản, biến và kiểu dữ liệu, câu lệnh điều khiển, hàm và phương thức, lớp và đối tượng, giao diện và kế thừa, xử lý ngoại lệ, xử lý chuỗi, và Generic trong Java. Hy vọng rằng những kiến thức này sẽ giúp bạn hiểu rõ hơn về Java và áp dụng chúng vào việc phát triển phần mềm của mình.