Bài giảng Lý thuyết ngôn ngữ hướng đối tượng - Bài 2: Cú pháp Java cơ bản

• Nêu được các quy ước đặt tên trong các chương

trình Java

• Tạo ra các định điều kiện, cấu trúc lặp và rẽ

nhánhdanh hợp lệ

• Mô tả các kiểu dữ liệu cơ bản trong Java và cách

sử dụng

• Các toán tử

• Sử dụng các câu lệnh

• Giải thích về phạm vi của biến

• Khai báo, khởi tạo các biến và mảng trong Java

pdf50 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2480 | Lượt tải: 4download
Tóm tắt nội dung Bài giảng Lý thuyết ngôn ngữ hướng đối tượng - Bài 2: Cú pháp Java cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ủa các kiểu dữ liệu nguyên 
thủy và xâu ký tự.
• Gồm 5 loại:
▫ integer
▫ floating point
▫ boolean
▫ character
▫ string
15
Literals
integer…………..7
floating point…7.0f
boolean……….true
character……….'A'
string………….."A"
a. Số nguyên
• Hệ cơ số 8 (Octals) bắt đầu với chữ số 0
▫ 032 = 011 010(2) = 16 + 8 + 2 = 26(10)
• Hệ cơ số 16 (Hexadecimals) bắt đầu với 0 và ký tự
x
▫ 0x1A = 0001 1010(2) = 16 + 8 + 2 = 26(10)
• Kết thúc bởi ký tự “L” thể hiện kiểu dữ liệu long
▫ 26L
• Ký tự hoa, thường cho giá trị bằng nhau
▫ 0x1a , 0x1A , 0X1a , 0X1A đều có giá trị 26 trong hệ
decimal
16
b. Số thực
• float kết thúc bằng ký tự f (hoặc F)
▫ 7.1f
• double kết thúc bằng ký tự d (hoặc D)
▫ 7.1D
• e (hoặc E) được sử dụng trong dạng biểu diễn 
khoa học:
▫ 7.1e2
• Một giá trị thực mà không có ký tự kết thúc đi 
kèm sẽ có kiểu là double
▫ 7.1 giống như 7.1d
17
c. boolean, ký tự và xâu ký tự
• boolean:
▫ true
▫ false
• Ký tự:
▫ Được đặt giữa 2 dấu nháy đơn
▫ Ví dụ: „a‟, „A‟ hoặc '\uffff‘
• Xâu ký tự:
▫ Được đặt giữa hai dấu nháy kép
▫ Ví dụ: “Hello world”, “Xin chao ban”,…
18
d. Escape sequence
• Các ký tự điều khiển nhấn phím
▫ \b backspace
▫ \f form feed
▫ \n newline
▫ \r return (về đầu dòng)
▫ \t tab
• Hiển thị các ký tự đặc biệt trong xâu
▫ \" quotation mark
▫ \‟ apostrophe
▫ \\ backslash
19
2.3. Chuyển đổi kiểu dữ liệu (Casting)
• Java là ngôn ngữ định kiểu chặt
▫ Gán sai kiểu giá trị cho một biến có thể dẫn đến các 
lỗi biên dịch hoặc các ngoại lệ của JVM
• JVM có thể ngầm định chuyển từ một kiểu dữ
liệu hẹp sang một kiểu rộng hơn
• Để chuyển sang một kiểu dữ liệu hẹp hơn, cần 
phải định kiểu rõ ràng.
20
int a, b;
short c;
a = b + c;
int d;
short e;
e = (short)d;
double f;
long g;
f = g;
g = f; //error
2.3. Chuyển đổi kiểu dữ liệu (2)
• Chuyển đổi kiểu sẽ
được thực hiện tự động 
nếu không xảy ra mất 
mát thông tin
▫ byte  short  int 
long  float  double
• Ép kiểu trực tiếp 
(explicit cast) được yêu 
cầu nếu có “nguy cơ” 
giảm độ chính xác
21
Ví dụ - chuyển đổi kiểu
long p = (long) 12345.56; // p == 12345
int g = p; // không hợp lệ dù kiểu int 
//có thể lưu giá trị 12345
char c = „t‟;
int j = c; // tự động chuyển đổi
short k = c; // không hợp lệ
short k = (short) c; // ép kiểu trực tiếp
float f = 12.35; // không hợp lệ
22
2.4. Khai báo và khởi tạo biến
• Các biến đơn (biến không phải là mảng) cần phải 
được khởi tạo trước khi sử dụng trong các biểu thức
▫ Có thể kết hợp khai báo và khởi tạo cùng một lúc.
▫ Sử dụng = để gán (bao gồm cả khởi tạo)
 Ví dụ:
 int i, j; // Khai báo biến
 i = 0;
 int k =i+1;
 float x=1.0f, y=2.0f;
 System.out.println(i); // In ra 0
 System.out.println(k); // In ra 1
 System.out.println(j); // Lỗi biên dịch
24
Chú thích
• Java hỗ trợ ba kiểu chú thích như sau:
▫ // Chú thích trên một dòng
// Không xuống dòng
▫ /* Chú thích một đoạn */
▫ /** Javadoc * chú thích dạng Javadoc */
25
Câu lệnh
• Các câu lệnh kết thúc bởi dấu;
• Nhiều lệnh có thể viết trên một dòng
• Một câu lệnh có thể viết trên nhều dòng
▫ Ví dụ:
26
System.out.println(
“This is part of the same line”);
a=0; b=1; c=2;
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
27
3. Toán tử (Operators)
• Kết hợp các giá trị đơn hoặc các 
biểu thức con thành những biểu 
thức mới, phức tạp hơn và có 
thể trả về giá trị.
• Java cung cấp nhiều dạng toán 
tử sau:
▫ Toán tử số học
▫ Toán tử bit, toán tử quan hệ
▫ Toán tử logic
▫ Toán tử gán
▫ Toán tử một ngôi
28
3. Toán tử (2)
• Toán tử số học
▫ +, -, *, /, %
• Toán tử bit
▫ AND: &, OR: |, XOR: ^, NOT: ~
▫ Dịch bit: >
• Toán tử quan hệ
▫ ==, !=, >, =, <=
• Toán tử logic
▫ &&, ||, !
29
3. Toán tử (3)
• Toán tử một ngôi
▫ Đảo dấu: +, -
▫ Tăng giảm 1 đơn vị: ++, --
▫ Phủ định một biểu thức logic: !
• Toán tử gán
▫ =, +=, -=, %= tương tự với >>, <<, &, |, ^
30
Thứ tự ưu tiên của toán tử
• Cho biết toán tử nào thực hiện trước – được xác định bởi 
các dấu ngoặc đơn hoặc theo ngầm định như sau:
▫ Postfix operators [] . (params) x++ x--
▫ Unary operators ++x --x +x -x ~ !
▫ Creation or cast new (type)x
▫ Multiplicative * / %
▫ Additive + -
▫ Shift > >>> (unsigned shift)
▫ Relational = instanceof
▫ Equality == !=
▫ Bitwise AND &
▫ Bitwise exclusive OR ^
▫ Bitwise inclusive OR |
▫ Logical AND &&
▫ Logical OR ||
▫ Conditional (ternary) ?:
▫ Assignment = *= /= %= += -= >>= >>= &= ^= |=
31
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
32
4.1. Lệnh if - else
• Cú pháp
if (dieu_kien){ 
cac_cau_lenh; 
}
else { 
cac_cau_lenh; 
}
• Biểu thức điều kiện nhận giá trị boolean
• Mệnh đề else là tùy chọn
33
Ví dụ - Kiểm tra số chẵn – lẽ
class CheckNumber
{
public static void main(String args[])
{
int num =10;
if (num %2 == 0)
System.out.println (num+ “la so chan”);
else
System.out.println (num + “la so le”);
}
}
34
4.2. Lệnh switch - case
• Kiểm tra một biến đơn với 
nhiều giá trị khác nhau và 
thực hiện trường hợp tương 
ứng
▫ break: Thoát khỏi lệnh 
switch-case
▫ default kiểm soát các giá 
trị nằm ngoài các giá trị
case:
35
case a 
action(s)
break
default
action(s)
[true]
case b 
action(s)
break
case z 
action(s)
break
.
.
.
[false]
case a
[true]
[true]
case b
case z
[false
]
[false
]
Ví dụ - Lệnh switch - case
36
if (day == 0 || day == 1) {
rule = “weekend”;
} else if (day > 1 && day <7) {
rule = “weekday”;
} else {
rule = error;
}
switch (day) {
case 0:
case 1:
rule = “weekend”;
break;
case 2:
…
case 6:
rule = “weekday”;
break;
default:
rule = “error”;
}
4.3. Vòng lặp while và do while
• Thực hiện một câu lệnh hoặc một khối 
lệnh khi điều kiện vẫn nhận giá trị true
▫ while() thực hiện 0 hoặc nhiều lần
▫ do...while() thực hiện ít nhất một lần
37
int x = 2;
while (x < 2) {
x++;
System.out.println(x);
}
int x = 2;
do {
x++;
System.out.println(x);
} while (x < 2);
action state
[true]
[false]
condition
Ví dụ - Vòng lặp while
class WhileDemo{
public static void main(String args[]){
int a = 5,fact = 1;
while (a >= 1){
fact *=a;
a--;
}
System.out.println(“The Factorial of 5 
is “+fact);
}
}
38
4.4. Vòng lặp for
• Cú pháp:
for (start_expr; test_expr; increment_expr){
// code to execute repeatedly
}
▫ 3 biểu thức đều có thể vằng mặt
▫ Có thể khai báo biến trong câu lệnh for
 Thường sử dụng để khai báo một biến đếm
 Thường khai báo trong biểu thức “start”
 Phạm vi của biến giới hạn trong vòng lặp
• Ví dụ:
for (int index = 0; index < 10; index++) {
System.out.println(index);
}
39
Ví dụ - vòng lặp for
class ForDemo
{
public static void main(String args[])
{
int i=1, sum=0;
for (i=1;i<=10;i+=2)
sum+=i;
System.out.println (“Sum of first five 
old numbers is “ + sum);
}
}
40
4.5. Các lệnh thay đổi cấu trúc điều khiển
• break
▫ Có thể được sử dụng để thoát ra ngoài câu lệnh 
switch
▫ Kết thúc vòng lặp for, while hoặc do...while
▫ Có hai dạng:
 Gắn nhãn: Tiếp tục thực hiện câu lệnh tiếp theo sau 
vòng lặp được gắn nhãn
 Không gắn nhãn: Thực hiện câu lệnh tiếp theo bên 
ngoài vòng lặp
42
4.5. Các lệnh thay đổi cấu trúc điều khiển (2)
• continue
▫ Có thể được sử dụng cho vòng lặp for, while hoặc 
do...while
▫ Bỏ qua các câu lệnh còn lại của vòng lặp hiện thời 
và chuyển sang thực hiện vòng lặp tiếp theo.
43
Ví dụ - break và continue
public int myMethod(int x) {
int sum = 0;
outer: for (int i=0; i<x; i++) {
inner: for (int j=i; j<x; j++){
sum++;
if (j==1) continue;
if (j==2) continue outer;
if (i==3) break;
if (j==4) break outer;
}
}
return sum;
}
44
4.6. Phạm vi biến
• Phạm vi của biến là vùng chương trình mà trong đó biến 
có thể được tham chiếu đến
▫ Các biến được khai báo trong một phương thức thì chỉ
có thể truy cập trong phương thức đó
▫ Các biến được khai báo trong vòng lặp hoặc khối lệnh 
thì chỉ có thể truy cập trong vòng lặp hoặc khối lệnh đó
45
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
46
5. Mảng (array)
• Tập hợp hữu hạn các phần tử cùng kiểu
• Phải được khai báo trước khi sử dụng
• Khai báo:
▫ Cú pháp:
 kieu_dlieu[] ten_mang = new kieu_dlieu[KT_MANG];
 kieu_dlieu ten_mang[] = new kieu_dlieu[KT_MANG];
▫ Ví dụ:
 char c[] = new char[12];
47
reference
Array or Object
variableName
5.1. Khai báo và khởi tạo mảng
• Khai báo, khởi tạo giá trị ban đầu:
▫ Cú pháp:
 kieu_dl[] ten_mang = {ds_gia_tri_cac_ptu};
▫ Ví dụ:
 int[] number = {10, 9, 8, 7, 6};
• Nếu không khởi tạo  nhận giá trị mặc định tùy 
thuộc vào kiểu dữ liệu.
• Luôn bắt đầu từ phần tử có chỉ số 0
48
49
Tên của mảng (tất 
cả các thành phần 
trong mảng có 
cùng tên, c)
Chỉ số (truy nhập đến 
các thành phần của 
mảng thông qua chỉ 
số)
c[ 0 ]
c[ 1 ]
c[ 2 ]
c[ 3 ]
c[ 4 ]
c[ 5 ]
c[ 6 ]
c[ 7 ]
c[ 8 ]
c[ 9 ]
c[ 10 ]
c[ 11 ]
-45
6
0
72
1543
-89
0
62
-3
1
6453
78
c.length: cho biết 
độ dài của mảng c
Ví dụ - mảng
5.1. Khai báo và khởi tạo mảng (2)
• Ví dụ:
int MAX = 5;
boolean bit[] = new boolean[MAX];
float[] value = new float[2*3];
int[] number = {10, 9, 8, 7, 6};
System.out.println(bit[0]); // prints “false”
System.out.println(value[3]); // prints “0.0”
System.out.println(number[1]); // prints “9”
50
5.2. Mảng nhiều chiều
• Bảng với các dòng và cột
▫ Thường sử dụng mảng hai chiều
▫ Ví dụ khai báo mảng hai chiều b[2][2]
▫ int b[][] = { { 1, 2 }, { 3, 4 } };
 1 và 2 được khởi tạo cho b[0][0] và b[0][1]
 3 và 4 được khởi tạo cho b[1][0] và b[1][1]
▫ int b[3][4];
52
5.2. Mảng nhiều chiều (2)
53
b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ]
Row 0
Row 1
Row 2
Column 0 Column 1 Column 2 Column 3
Chỉ số hàng
Tên mảng
Chỉ số cột
b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]
b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ]

File đính kèm:

  • pdfBài giảng Lý thuyết ngôn ngữ hướng đối tượng - Bài 2_Cú pháp Java cơ bản.pdf
Tài liệu liên quan