You are on page 1of 15

I.

Kiến thức về các Flow Control (Luồng điều khiển)


Trong Java, một số từ khóa dùng để đổi luồng của chương trình. Các câu lệnh có thể được thực
hiện nhiều lần hoặc chỉ trong một điều kiện cụ thể. Các lệnh if, else và switch được sử dụng để
thử nghiệm điều kiện, while và for báo cáo để tạo ra chu kỳ, và break và continue báo cáo để
thay đổi vòng lặp.
Khi chương trình được chạy, các câu lệnh được thực hiện từ trên cùng của tệp nguồn xuống
dưới cùng, từng cái một.
1. Câu lệnh if-then
Câu lệnh if-then là câu lệnh cơ bản của tất cả các câu lệnh điều khiển. Nó cho chương trình
của bạn biết thực thi phần mã nguồn nào chỉ với từ if, kiểm tra đánh giá là true. Ví dụ trong
lớp Bicycle phanh giảm bớt tốc độ của xe khi nó đang chuyển động chỉ với từ if. Ví dụ thực
thi bằng phương thức applyBrakes.

void applyBrakes() {
// the "if" clause: bicycle must be moving
if (isMoving){
// the "then" clause: decrease current speed
currentSpeed--;
}
}
Nếu kiểm tra có kết quả là false(nghĩa là xe không di chuyển) thì điều kiện nhảy đến kết thúc
câu lệnh if-then
2. Câu lệnh if-then-else
Câu lệnh if-then-else cung cấp một đường thực khi mệnh đề if được kiểm tra giá trị là false
3. Câu lệnh switch case
 Không giống các câu lệng if-then, if-then-else, câu lệnh switch có thể thực thi số
lượng đếm đuọc của các nhánh. Một switch làm việc với byte, short, char, int các
kiểu dữ liệu nguyên thủy. Nó cũng làm việc với dữ liệu liệt kê, lớp String, và một vài
lớp đặc biệt khác: Charater, Byte, Short.
 Trong phần thân của câu lệnh switch được biết đến là khối switch. Một câu lệnh
trong khối switch có thể được gán nhãn với một hoặc nhiều nhãn case hoặc default.
Khi tính toán giá trị biểu thức switch, việc thực thi sẽ dựa trên việc khớp giá trị đó
với các nhãn case.
 Việc sử dụng các câu lệnh if-then-else hay switch là dựa trên khả năng đọc hiểu biểu
thức kiểm tra điều kiện. Một câu lệng if-then-else có biểu thức điều kiện trong
phjam vi giá trị nào đó, nhưng trái lại câu lệnh switch dựa trên biểu thức điều kiện là
một số nguyên, giá trị liệt kê hoặc đối tượng string
 Một điểm thú vị là câu lệnh break. Mỗi câu lệnh Break ở cuối để kết thúc câu lệnh
switch. Tiếp tục luồng điều khiển đầu tiên trong khối switch. Các câu lệnh break là
cần thiết bởi vì không có chúng, các câu lệnh trong khối switch sẽ được chạy hết:
toàn bộ các câu lệnh sau các nhãn case thỏa mãn đều được thực thi tuần tự, bất kể
các biểu thức nhãn case sau đó cho đến khi gặp một câu lệnh break.
 Về kỹ thuật thì break cuối không yêu cầu bởi vì các câu lệnh sẽ được thực hiệnt rong
lệnh switch. Sử dụng một break được khuyến khích là thay đổi code. Dễ đọc và ít bị
lỗi hơn. Phần default được dùng khi tất cả các phần case khác đều không thỏa mãn.

public class StringSwitchDemo {


 
    public static int getMonthNumber(String month) {
 
        int monthNumber = 0;
 
        if (month == null) {
            return monthNumber;
        }
 
        switch (month.toLowerCase()) {
            case "january":
                monthNumber = 1;
                break;
            case "february":
                monthNumber = 2;
                break;
            case "march":
                monthNumber = 3;
                break;
            case "april":
                monthNumber = 4;
                break;
            case "may":
                monthNumber = 5;
                break;
            case "june":
                monthNumber = 6;
                break;
            case "july":
                monthNumber = 7;
                break;
            case "august":
                monthNumber = 8;
                break;
            case "september":
                monthNumber = 9;
                break;
            case "october":
                monthNumber = 10;
                break;
            case "november":
                monthNumber = 11;
                break;
            case "december":
                monthNumber = 12;
                break;
            default: 
                monthNumber = 0;
                break;
        }
 
        return monthNumber;
    }
 
    public static void main(String[] args) {
 
        String month = "August";
 
        int returnedMonthNumber =
            StringSwitchDemo.getMonthNumber(month);
 
        if (returnedMonthNumber == 0) {
            System.out.println("Invalid month");
        } else {
            System.out.println(returnedMonthNumber);
        }
    }
}

4. Câu lệnh while và do-while


Câu lệnh while thực thi một khối các câu lệnh trong khi điều kiện là true.
Câu lệnh while khi tính toán biểu thức, biểu thức này phải trả về một giá trị kiểu boolean.
Nếu biểu thức tính toán ra giá trị true, câu lệnh while thực thi các câu lệnh nằm trong khối
lệnh while. Tiếp tục kiểm tra biểu thúc và thực hiện khối lệnh đó cho đến khi biểu thức điều
kiện và trả giá trị false.
Ví dụ sử dụng câu lệnh while để in ra giá trị từ 1-10

class WhileDemo {
public static void main(String[] args){
int count = 1;
while (count < 11) {
System.out.println("Count is: " + count);
count++;
}
}
}

Sự khác nhau giữa do-while và while đó là đánh giá biểu thức điều kiện ở đầu vòng lặp. Tráu
lại câu lệnh được thực thi trong khối do luôn thực hiện ít nhất một lần.

class DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
} while (count < 11);
}
}

5. Câu lệnh for


Câu lệnh for cung cấp một cách gọn nhẹ để lặp trong một phạm vi giá trị.
Lưu ý:
Biểu thức khởi tại initialzation khởi đầu vòng lặp; nó thực thi một lần, giống như bắt đầu
vòng lặp.
Khi biểu thức kết thúc temination tính ra giá trị false, bòng lặp kết thúc.
Biểu thúc thay đổi increment là cần thiết sáu mỗi lần thực hiện lặp, nó làm biểu thúc điều
kiện tăng hoặc giảm giá tri.

class ForDemo {
    public static void main(String[] args){
         for(int i=1; i<11; i++){
              System.out.println("Count is: " + i);
         }
    }
}

6. Lệnh dừng vòng lặp


a. Lệnh break
Được dử dụng để ngắt khỏi vòng ljawp for, while, do..ưhile khi cần thiết
Được sử dụng cho những bài toán không biết trước được khi nào dùng, hoặc biểu thức điều
kiện lặp quá phức tạp, phải biểu diễn bên trong thân vòng lặp
Nếu sử dụng lệnh break thì thay vì biểu diễn biểu thức điều kiệp lặp ta phải dùng biểu thúc
điều kiện dừng để lệnh break được thực thi, khi dód vòng lặp sẽ được dừng lại.
b. Lệnh continue
Được sử dụng để ngắt khỏi lần lặp hiện tại để bắt dầu một lần lặp mới trong cấu trúc for,
while, do...ưhile khi cần thiết.
Được sử dụng khi giá trị trong thân vòng lặp không thích hợp để thực hiện tiếp công việc,
cần bỏ qua để sang một lần lặp tiếp theo.

Các tính chất OOP


Các từ khóa trong Java

Keyword What It Does


Khai báo lớp, phương thức, interface trừu tượng không có thể
abstract
hiện(instance) cụ thể
assert Kiểm tra điều kiện đúng hay sai (thường dùng trong Unit Test)
boolean Khai báo biến kiểu logic với 2 trị: true, false.
break Thoát ra khỏi vòng lặp hoặc lệnh switch-case.
byte Kiểu byte với các giá trị nguyên chiếm 8 bit (1 byte).
Trường hợp được tuyển chọn theo switch (chỉ được dùng khi đi kèm
case
switch)
Được sử dụng để bắt ngoại lệ, được sử dụng cùng với try để xử lý các
catch
ngoại lệ xảy ra trong chương trình
char Kiểu ký tự Unicode, mỗi ký tự chiếm 16 bit (2 byte).
class Được sử dụng để định nghĩa class
Chưa được sử dụng vì vậy bạn không thể dùng nó trong ngôn ngữ
const
Java
continue Dừng chu trình(iteration) lặp hiện tại và bắt đầu chu trình tiếp theo
Mặc định đươc thực thi khi không có case nào trả về giá trị true (dùng
default
trong switch case)
do Dùng trong vòng lặp do while
Kiểu số thực với các giá trị biểu diễn theo dạng dấu phẩy động 64 bit (8
double
byte).
else Rẽ nhánh theo điều kiện ngược lại của if.
Định nghĩa kiểu dữ liệu enum - gần giống với kiểu dữ liệu mảng nhưng
enum
các phần tử có thể bổ sung thêm các phương thức
Được sử dụng để định nghĩa lớp con kế thừa các thuộc tính và phương
extends
thức từ lớp cha.
Chỉ ra các biến, phương thức không được thay đổi sau khi đã được
final
định nghĩa. Các phương thức final không thể được kế thừa và override
Thực hiện một khối lệnh đến cùng bất chấp các ngoại lệ có thể xảy ra.
finally
Được sử dụng trong try-catch
float Kiểu số thực với các giá trị biểu diễn theo dạng dấu phẩy động 32 bit.
for Sử dụng cho vòng lặp for với bước lặp được xác định trước
goto Chưa được sử dụng
if Lệnh chọn theo điều kiện logic
Xây dựng một lớp mới cài đặt những phương thức từ interface xác
implements
định trước.
Yêu cầu một hay một số lớp ở các gói chỉ định cần nhập vào để sử
import
dụng trong ứng dụng hiện thời.
Kiểm tra xem một đối tượng nào đó có phải là một thể hiện của 1 class
instanceof
được định nghĩa trước hay không
int Kiểu số nguyên với các giá trị chiếm 32 bit (4 byte).
interface Được sử dụng để định nghĩa interface
long Kiểu số nguyên lớn với các giá trị chiếm 64 bit (8 byte).
Giúp lập trình viên có thể sử dụng code được viết bằng các ngôn ngữ
native
khác
new Khởi tạo đối tượng
package Xác định một gói sẽ chứa một số lớp ở trong file mã nguồn.
Khai báo biến dữ liệu, phương thức riêng trong từng lớp và chỉ cho
private
phép truy cập trong lớp đó.
Khai báo biến dữ liệu, phương thức chỉ được truy cập ở lớp cha và các
protected
lớp con của lớp đó.
Khai báo lớp, biến dữ liệu, phương thức công khai có thể truy cập ở
public
mọi nơi trong hệ thống.
return Kết thúc phương thức và trả về giá trị cho phương thức
short Kiểu số nguyên ngắn với các giá trị chiếm 16 bit (2 byte).
Định nghĩa biến, phương thức của một lớp có thể được truy cập trực
static
tiếp từ lớp mà không thông qua khởi tạo đôi tượng của lớp
super Biến chỉ tới đối tượng ở lớp cha
switch Sử dụng trong câu lệnh điều khiển switch case
Chỉ ra là ở mỗi thời điểm chỉ có một đối tượng hoặc một lớp có thể truy
synchronize
nhập đến biến dữ liệu, hoặc phương thức loại đó, thường được sử
d
dụng trong lập trình đa luồng (multithreading)
this Biến chỉ tới đối tượng hiện thời.
Tạo một đối tượng exception để chỉ định một trường hợp ngoại lệ xảy
throw
ra
throws Chỉ định cho qua ngoại lệ khi exception xảy ra
Chỉ định rằng nếu một đối tượng được serialized, giá trị của biến sẽ
transient
không cần được lưu trữ
try Thử thực hiện cho đến khi gặp một ngoại lệ.
void Chỉ định một phương thức không trả về giá trị
Báo cho chương trình dịch biết là biến khai báo volatile có thể thay đổi
volatile
tùy ý trong các luồng (thread).
while Được sử dụng trong lệnh điều khiển while
2. OOP là gì?
4 tính chất hướng đối tượng
- Tính đóng gói – Enacapsulation
- Tính trừu tượng – Abstraction
- Tính thùa kế - Inheritance
- Tính đa hình – Polymorphism

Ý nghĩa của mỗi tính chất


Tính đóng gói
Tính đóng gói nhằm bảo vệ đối tượng không bị truy cập từ code bên ngoài vào để thay đổi
giá trị các thuộc tính hay có thể truy cập trực tiếp. Việc cho phép truy cập các giá trị của đối
tượgn tùy theo sự đồng ý của người viết ra lớp của đối tượng đó. Tính chất này đảm bảo sự
bảo mật, toàn vẹn của đối tượng trong java.
Các loại phạm vi truy cập trong OOP
Phạm vi truy cập (access modifiers) là xác định độ tủy cập phạm vi vào dữ liệu của các thuộc
tính, phương thức hoặc class
Package(gói) là nhóm các class, interface hoặc các package con liên quan lại với nhau. Việc dùng
package dùng để nhóm các class liên quan với nhau thành thư viện như thư viện swing, awt..
Ngoài ta, mục đích của oackge ngăn cản xung đột đặt tên, điều kiện truy cập, thuận tiện tìm
kiếm và lưu trữ.
Các loại phạm vi truy cập
Có 4 loại phạm vi truy cập:

 Private
 Default
 Protected
 Public
Private
Private chỉ cho phép truy cập nội bộ của một class
Default
Đây là phạm vi mặc định, khi bạn không ghi gì hết thì nó để phạm vi truy cập dạng này: ở mặc
định, phạm vi truy cập chỉ nằm trong nội bộ package.
Protected
Là phạm vi truy cập có tgheer từ trong và ngoài package, nhưng phải thông qua tính kế thừa.
Protected chỉ có thể áp dụng bên trong class như thuộc tính, phương thức hay lớp con. Không
thể áp dụng cho lớp ngoài hay interface.

Pubic
Đây là phạm vi truy cập rộng, có thể truy cập bất cứ đâu trong project. Tất nhiên khi khác
package để cần phải khai báo import để xác định vị trí của class
Tính trừu tượng
Tính trừu tượng là một tiến trình chỉ nói ra tính năng của người dùng, các khái niệm được định
nghĩa trong quá trình phát triển, bỏ qua những chi tiết triển khai bên trong. Tính trừu tượng
cho phép người lập trình tập trung cốt lõi cần thiết của đối tượng thay vì quan tâm sự phức tạp
bên trong hoặc cách nó hoạt động.
Tính kế thừa

Kế thừa trong lập trình (Inheritance) có nghĩa là một lớp sẽ thừa hưởng lại những
thuộc tính, phương thức từ lớp khác.
Tính kế thưad cho phép chúng ta cải tiến chương trình bằng cách kế thừa lại lớp cũ và phát
triển những tính năng mới. Lớp con sẽ kế thừa tất cả những thành phần của lớp cha, nhờ sự
chia sẻ này mới có thể mở rộng những đặc tính sẵn có mà không cần phải định nghĩa lại.
Tính đa hình
Tính đa hình có thể nói luôn tồn tại song song với tính kế thừa. Khi có nhiều lớp con kế thừa lớp
cha nhưng có những tính chất khác nhau cũng gọi là tính đa hình. Hoặc những tác vụ trong cùng
một đối tượng thể hiện nhiều cách khác nhau cũng gọi là đa hình. Tính đa hình là kết quả tất
yếu khi ta phát triển khả năng kế thừa và nâng cấp chương trình.\
Interface trong OOP
Interface là một kiểu dữ liệu tham chiếu tring java. Nó là tập hợp các phương thức
abstract(trừu tượng). Khi một lớp kế thừa interface, thì nó sẽ kế thừa những phương thức
abstract của interface đó.
Một số đặc điêrm của interface
 Không thể khởi tạo, nên không có phương thức khởi tạo
 Tất cả các phương thức trong interface luôn ở dạng public abstract mà không cần khai
báo
 Các thuộc tính trong interface luôn ở dạng publisc static final mà không cần khai báo,
yêu cầu phải có giá trị.
 Mục đích của interface là để thay thế đa kế thừa lớp của những ngôn gữ khác. Ngoài ra
interface giúp đồng bộ và thống nhất trong công việc phát triển hệ thống trao đổi thông
tin.

You might also like