Table of contents
- Lời nói đầu
- 1. Setting Environment (Cài đặt môi trường)
- 2. Object-oriented programming (Cơ bản về lập trình hướng đối tượng)
- 3. First Program (Chương trình đầu tiên)
- 4. Data type (Kiểu dữ liệu)
- 5. Variable (Biến)
- 6. Comment (Chú thích)
- 7. Operators (Các toán tử)
- 8. Method (Phương thức)
- 9. Một vài quy tắc trong Java
- 10. Flow Control
- Kết bài
- Tham khảo
Lời nói đầu
Bài này tôi sẽ tổng hợp lại các cú pháp cơ bản trong Java.
1. Setting Environment (Cài đặt môi trường)
Tôi sẽ không nói về phần này, các bạn có thể tham khảo bài viết sau: https://www.geeksforgeeks.org/setting-environment-java/?ref=lbp
2. Object-oriented programming (Cơ bản về lập trình hướng đối tượng)
Java là 1 ngôn ngữ lập trình hướng đối tượng (an object-oriented programming language), điều này có nghĩa là Java là tập hợp của các đối tượng và các đối tượng đó giao tiếp thông qua lời gọi phương thức (method call) để giao tiếp với nhau.
Trong lập trình hướng đối tượng, ta thường nghe về khái niệm Class và Object.
1. Class:
Class (lớp) là 1 bản vẽ, hay 1 cái khung của Object (đối tượng).
Ví dụ:
Con người là lớp.
Theo đó Alice là đối tượng của lớp Con người.
2. Object:
Object (đối tượng) là 1 thể hiện của Class (lớp).
Đối tượng có đặc điểm và hành vi.
Trong ngôn ngữ lập trình thì đặc điểm được biết tới cái tên property, hành vi được biết tới cái tên method.
Ví dụ:
Động vật là lớp.
Theo đó con chó, con mèo, con gà chính là đối tượng của lớp Động vật.
Con chó có đặc điểm (property) là 4 chân, có đuôi và có hành vi(method) là sủa, ngủ.
3. Property:
Như ví dụ về con chó ở trên, ta có thể hiểu Property chính là đặc điểm của Object.
4. Method:
Cũng với ví dụ trên, ta thấy Method chính là hành vi của Object.
3. First Program (Chương trình đầu tiên)
Lấy đoạn code sau làm ví dụ:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello wrorld!");
}
}
Copy đoạn code trên và lưu vào file mang tên HelloWorld.java
.
- Tiến hành phân tích từng khối code:
public class HelloWorld {}
Ở trên tôi đã trình bày sơ qua về lập trình hướng đối tượng, vậy thì trong đoạn code này HelloWorld
chính là 1 class.
Lưu ý: Trong Java, khi đặt tên file ta cần đặt tên giống với tên class nếu ko sẽ xảy ra lỗi. Ví dụ class là
HelloWorld
thì tên file phải làHelloWorld.java
- Xem xét tiếp đoạn code sau:
public static void main(String[] args) {}
Đoạn này cho biết đây chính là hàm main
, hàm main
chính là điểm khởi đầu của 1 chương trình, đây sẽ là hàm được thực thi đầu tiên.
- Xem xét tiếp đoạn code:
System.out.println("Hello world!");
Đoạn code này sử dụng phương thức System.out.println()
để in ra màn hình dòng chữ Hello world!
.
4. Data type (Kiểu dữ liệu)
Có 2 kiểu dữ liệu trong Java:
Kiểu dữ liệu nguyên thủy (Primitive Data Type): byte, char, int, short, byte, long, float và double.
Kiểu dữ liệu không nguyên thủy (Non-Primitive Data Type) hay còn gọi là Kiểu dữ liệu Object (Object Data Type): String, Class, Object, Interface, Array...
Primitive Data Types
Kiểu dữ liệu | Mô tả | Giá trị mặc định | Kích thước | Ví dụ | Khoảng giá trị |
boolean | true/false | false | 1 bit | true, false | true, false |
byte | twos-complement integer | 0 | 8 bits | (none) | -128 tới 127 |
char | Unicode character | \u0000 | 16 bits | ‘a’, ‘\u0041’, ‘\101’, ‘\’, ‘\’, ‘\n’, ‘β’ | kí tự đại diện của bảng ASCII, giá trị từ 0->255 |
short | twos-complement integer | 0 | 16 bits | (none) | -32,768 tới 32,767 |
int | twos-complement intger | 0 | 32 bits | -2,-1,0,1,2 | -2,147,483,648 tới 2,147,483,647 |
long | twos-complement integer | 0 | 64 bits | -2L,-1L,0L,1L,2L | -9,223,372,036,854,775,808 tới 9,223,372,036,854,775,807 |
float | IEEE 754 floating point | 0.0 | 32 bits | 1.23e100f , -1.23e-100f , .3f ,3.14F | tối đa 7 chữ số thập phân |
double | IEEE 754 floating point | 0.0 | 64 bits | 1.23456e300d , -123456e-300d , 1e1d | tối đa 16 chữ số thập phân |
5. Variable (Biến)
Cú pháp để khai báo biến trong Java bao gồm 3 thành phần: kiểu dữ liệu (data type), tên biến (variable name) và giá trị của dữ liệu (data type).
<kiểu dữ liệu> <tên biến> = <giá trị của dữ liệu>;
Xem xét đoạn code sau:
public class test1 {
public static void main(String[] args) {
int a = 1;
float b = 5.5F;
double c = 5.5;
boolean d = true;
char e = 'A';
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
Trong đoạn code trên, ta thấy kiểu dữ liệu float khi khai báo giá trị sẽ có thêm chữ F ở sau, tương tự với kiểu dữ liệu long sẽ thêm L vào sau.
5.1. Tự động chuyển kiểu dữ liệu (Automatic Type Conversion)
public static void main(String[] args) {
int a = 1;
byte b = 2;
int c = a + b;
System.out.println(c);
}
Ở đoạn code trên ta thấy a
là biến kiểu int, b
là biến kiểu byte.
Tuy nhiên kết quả sẽ hiển thị bằng 3
. Điều đó là do java đã tự thực hiện chuyển đổi dữ liệu, biến b
đã được chuyển thành kiểu int.
5.2. Ép buộc chuyển kiểu dữ liệu (Coercion Type Conversion)
Cú pháp để ép buộc chuyển kiểu dữ liệu
<kiểu dữ liệu> <tên biến> = (kiểu dữ liệu muốn chuyển) <giá trị của dữ liệu muốn chuyển>;
Ví dụ:
int i = (int)1.5
Lưu ý: Chuyển đổi kiểu dữ liệu dạng ép buộc sẽ dẫn đến mất độ chính xác của dữ liệu.
6. Comment (Chú thích)
Có 3 kiểu comment trong Java:
6.1. Single line Comment (Comment 1 dòng)
Cú pháp
// System.out.println("This is an comment.");
6.2. Single line Comment (Comment nhiều dòng)
Cú pháp
/*
System.out.println("This is the first line comment.");
System.out.println("This is the second line comment.");
*/
6.3. Documentation Comment (Comment văn bản)
Cú pháp
/** documentation */
7. Operators (Các toán tử)
Tham khảo: https://www.geeksforgeeks.org/java-arithmetic-operators-with-examples/?ref=lbp
8. Method (Phương thức)
Cú pháp khai báo 1 method:
<phạm vi truy cập> <kiểu dữ liệu trả về> <tên method> (danh sách tham số) {
// khối code cần thực hiện
return <kiểu dữ liệu trả về> // không bắt buộc
}
Phân tích các thành phần khi khai báo method:
- Phạm vi truy cập (Access Modifier): Còn gọi là phạm vi truy cập của method. Có 4 phạm vi truy cập trong Java, đó là:
public: Có thể truy cập trong tất cả các Class trong ứng dụng của bạn.
private: Chỉ có thể truy cập trong Class mà nó được định nghĩa.
default: Khi không khai báo phạm vi truy cập, chương trình sẽ ngầm hiểu phạm vi truy cập là default, người dùng có thể dùng từ khóa
default
để khai báo thay vì để chương trình ngầm hiểu (tuy nhiên kết quả mang lại vẫn như nhau). Lúc này có thể truy cập trong cùng một Class và Package trong đó Class của nó được định nghĩa (defined).
Kiểu dữ liệu trả về (Return Type): kiểu dữ liệu trả về của method có thể là 1 giá trị bất kì hoặc là void.
Xem xét dòng 3
return <kiểu dữ liệu trả về>
: đây là 1 dòng không bắt buộc phải khai báo nếu như không muốn trả về dữ liệu gì - lúc này phần return type phải khai báo làvoid
, nếu như muốn method trả về 1 loại dữ liệu nào đó thì phần return type ở dòng 1 và return type ở dòng 3 phải tương ứng nhau.Tên method (method name): Đặt tên cho method mà chúng ta đã xác định, đáp ứng đặc điểm kỹ thuật của mã định danh (sẽ mô tả trong phần 9.2) và sử dụng nó để gọi phương thức.
Danh sách tham số (Parameter List): là danh sách các tham số (parameter) mà được định nghĩa. Một method có thể có không, một hoặc nhiều tham số. Tham số được định nghĩa cùng kiểu dữ liệu của chúng và nằm trong dấu ngoặc đơn
()
. Nếu có nhiều tham số thì chúng được phân tách bằng dấu phẩy,
. Nếu không có tham số, bạn phải sử dụng dấu ngoặc đơn rỗng.
8.1. Ví dụ 1:
public void show(){
System.out.println("Sio");
}
Method có access modifier là
public
return type là
void
.method name là
show
.Không có tham số nào, do vậy trong hàm không cần dòng
return <kiểu dữ liệu trả về>
.
8.2. Ví dụ 2:
public string MyInfo(string name, int age){
string myName = name;
int myAge = age;
return "myName: " + name + "myAge: " + age;
}
Method có access modifier là
public
return type là
string
.method name là
MyInfo
.Có 2 tham số là
name
vàage
. Kiểu dữ liệu củaname
làstring
, kiểu dữ liệu củaage
làint
.Dòng cuối phải khai báo lệnh
return
với giả trị trả về làstring
.
9. Một vài quy tắc trong Java
9.1. Source File Name (Tên file)
Tên của file phải khớp chính xác với tên public class với file extension là .java. Tên của file có thể là một tên khác nếu nó không có bất kỳ public class nào.
Giả sử bạn có một public class là GFG
.
GFG.java // cú pháp hợp lệ
gfg.java // cú pháp ko hợp lệ
9.2. Identifiers (Định danh)
Identifiers (tạm dịch: định danh) là tên của biến cục bộ (local variables), biểu hiện của class và biến của class (instance and class variables), nhãn (lables), lớp (classes), gói (packages), mô-đun (modules), phương thức (methods).
Mọi ký tự Unicode đều hợp lệ, không chỉ riêng ký tự trong bảng ASCII.
Tất cả các Identifiers có thể bắt đầu bằng một chữ cái, ký hiệu tiền tệ hoặc dấu gạch dưới (_). Theo quy ước, một chữ cái phải là chữ thường khi đặt tên cho các biến.
Ký tự đầu tiên của Identifiers có thể được theo sau bởi bất kỳ sự kết hợp nào của các chữ cái, chữ số, ký hiệu tiền tệ và dấu gạch dưới. Dấu gạch dưới không được khuyến nghị cho tên của các biến. Các hằng số (thuộc tính static final và enum) phải có tất cả các chữ cái viết hoa.
Quan trọng nhất, Identifiers phân biệt chữ hoa chữ thường.
Không thể sử dụng Keywords làm Identifiers vì nó là Từ dành riêng (Reserved words) và có một số ý nghĩa đặc biệt. (Ở phần 9.5 tôi có trình bày về Keywords)
9.3. Case Sensitivity (Phân biệt chữ hoa chữ thường)
Java là 1 ngôn ngữ có phân biệt chữ hoa chữ thường (case-sensitive).
Vậy nên AB
, Ab
, aB
, ab
là khác nhau trong Java.
System.out.println("Sio"); // cú pháp hợp lệ
system.out.println("Sio"); // Cú pháp ko hợp lệ bởi kí tự đầu tiên của keyword System phải là viết hoa
9.4. White spaces (Khoảng trắng)
Trong Java có thể 1 dòng chỉ chứa khoảng trắng, có thể có chú thích (comment), được gọi là một dòng trống và trình biên dịch Java hoàn toàn bỏ qua nó.
9.5. Java Keywords
Từ khóa (Keywords) hoặc Từ dành riêng (Reserved words) là các từ trong ngôn ngữ được sử dụng cho một số quy trình nội bộ hoặc đại diện cho một số hành động được xác định trước. Do đó, những từ này không được phép sử dụng làm tên biến hoặc đối tượng.
Các Keyword: abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum, extends, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
10. Flow Control
Tham khảo: https://www.geeksforgeeks.org/decision-making-javaif-else-switch-break-continue-jump/?ref=lbp
Kết bài
Phần 3 này khá dài và có thể sẽ còn update.