Chuong 03 - Cu phap Java co ban
Bé m«n C«ng nghÖ phÇn mÒm KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA
Chương 03. Cú pháp Java cơ bản
Nguyễn Thị Thu Trang [email protected]
1
Mục tiêu bài học
Nêu được các quy ước đặt tên trong các chương trình Java Tạo ra các định danh 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 điều kiện, cấu trúc lặp và rẽ nhá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
Department of Software Engineering 2
Nội dung
1. Định danh 2. Các kiểu dữ liệu 3. Hằng 4. Toán tử 5. Cấu trúc điều khiển 6. Mảng
Department of Software Engineering 3
1
1. Định danh
Định danh: Xâu ký tự thể hiện tên các biến, các phương thức, các lớp và nhãn Phân biệt chữ hoa, chữ thường ....................................... ....................................... .................................... ................................. .................................
Department of Software Engineering 4
1. Định danh
Phân biệt chữa hoa - chữ thường (case- sensitive) yourname, yourName, Yourname, YourName là 4 định danh khác nhau Quy ước: Gói (package): tất cả sử dụng ................ theexample Lớp (Class): viết hoa chữ cái đầu tiên trong các từ ghép lại
Phương thức/thuộc tính (method/field): BắtDepartment of Software Engineering 5
1. Định danh
Literals null true false Từ khóa (keyword) abstract assert boolean break byte case catch char class continue default do double else extends final finally float for 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 Từ dành riêng (reserved for future use) byvalue cast const future generic goto inner operator outer rest var volatile
Department of Software Engineering 6
2
Nội dung
1. Định danh 2. Các kiểu dữ liệu 3. Hằng 4. Toán tử 5. Cấu trúc điều khiển 6. Mảng
Department of Software Engineering 7
2. Các kiểu dữ liệu
Trong Java kiểu dữ liệu được chia thành hai loại: Kiểu dữ liệu nguyên thủy (primitive) Số nguyên (interger) Số thực (float) Ký tự (char) Boolean Kiểu dữ liệu tham chiếu (reference) Mảng (array) Lớp (class) Giao diện (interface) Sẽ được học trong phần sau
Department of Software Engineering 8
Kiểu dữ liệu nguyên thủy
Mọi biến đều phải khai báo một kiểu dữ liệu Các kiểu dữ liệu cơ bản chứa một giá trị đơn Kích thước và định dạng phải phù hợp với kiểu của nó Java phân loại thành 4 kiểu dữ liệu nguyên thủy
Department of Software Engineering 9
3
2.1. Số nguyên
Số nguyên có dấu Khởi tạo với giá trị .........
Department of Software Engineering 10
2.2. Số thực
Có thể phân thành từng phần Khởi tạo với giá trị ................
Department of Software Engineering 11
2.3. Ký tự
Ký tự Unicode không dấu, được đặt giữa hai dấu nháy đơn 2 cách gán giá trị: Sử dụng các chữ số trong hệ 16: Sử dụng ký tự: Giá trị mặc định là giá trị ..................
Department of Software Engineering 12
4
Ví dụ
//Các bit thể hiện giá trị số -1 short s = (short) 0xffff;
//Các bit tương tự, thể hiện một ký tự Unicode char c = '\uffff';
// Chuyển từ kiểu short thành int giá trị -1 int i1 = s;
//Chuyển từ kiểu char thành int giá trị 65535 int i2 = c;
Department of Software Engineering 13
2.4. Boolean
Giá trị boolean được xác định rõ ràng trong Java Một giá trị int không thể sử dụng thay cho giá trị boolean Một biến boolean có thể lưu trữ giá trị hoặc true hoặc false Biến boolean được khởi tạo là .....................
Department of Software Engineering 14
Nội dung
1. Định danh 2. Các kiểu dữ liệu 3. Hằng 4. Toán tử 5. Cấu trúc điều khiển 6. Mảng
Department of Software Engineering 15
5
3.1. Nguyên dạng (literal)
Một literal là một giá trị của các kiểu dữ liệu nguyên thủy.
Gồm 5 loại: integer floating point boolean character string
Literals integer..............7 floating point...7.0f boolean..........true character..........'A' string.............."A"
Department of Software Engineering 16
3.1. Nguyên dạng (2)
a. Số nguyên: Hệ cơ số 8 (Octals) bắt đầu với chữ số 0 032 = Hệ cơ số 16 (Hexadecimals) bắt đầu với 0 và ký tự x 0x1A = 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
Department of Software Engineering 17
3.1. Nguyên dạng (3)
b. Số thực: float literal kết thúc bằng ký tự .............. 7.1f double literal kết thúc bằng ký tự ..................... 7.1D e (hoặc E) được sử dụng trong dạng biểu diễn khoa học:
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
Department of Software Engineering 18
6
3.1. Nguyên dạng (4)
c. Escape sequence: Các ký tự điều khiển nhấn phím \b backspace \f form feed
newline \r return \t tab Hiển thị các ký tự đặc biệt trong xâu \" quotation mark \' apostrophe \\ backslash
Department of Software Engineering 19
3.2. Ép 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 Ép kiểu dữ liệu cho phép sử dụng nó như một kiểu dữ liệu khác 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.
Department of Software Engineering 20
3.2. Ép 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 É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 long p = (long) 12345.56; // p == 12345 int g = p; // không hợp lệ mặc 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ệ
Department of Software Engineering 21
7
3.2. Ép kiểu dữ liệu (2)
Các biến phải được khai báo trước khi sử dụng 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; // Khai báo và khởi tạo cùng lúc float x=1.0, y=2.0; System.out.println(i); // In ra 0 System.out.println(k); // In ra 1 System.out.println(j); // Lỗi biên dịch
Department of Software Engineering 22
3.3. Hằng (constant)
Cú pháp khai báo hằng:
Ví dụ: public static final int VAL_THREE = 39; private final int[] a = { 1, 2, 3, 4, 5, 6 };
Department of Software Engineering 23
Nội dung
1. Định danh 2. Các kiểu dữ liệu 3. Hằng 4. Toán tử 5. Cấu trúc điều khiển 6. Mảng
Department of Software Engineering 24
8
4. Toán tử
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ử điều kiện Toán tử gán
Department of Software Engineering 25
4.1. Toán tử số học
Department of Software Engineering 26
4.2. Toán tử bit
Department of Software Engineering 27
9
4.2. Phép toán bit (tiếp)
Department of Software Engineering 28
4.3. Phép toán quan hệ
Department of Software Engineering 29
4.4. Phép toán logic
Department of Software Engineering 30
10
4.5. Toán tử gán
Cú pháp
Lấy giá trị của bieu_thuc gán cho ten_bien Ví dụ: int a, b, c; a = 3; b = a + 5; c = a * b;
Department of Software Engineering 31
4.5. Toán tử gán (tiếp)
Phép toán gán thu gọn: x = x + y; giống như
Dạng lệnh gán thu gọn này còn áp dụng được với các phép toán khác: +, -, *, /, %, >>, <<, &, |, ^
Department of Software Engineering 32
4.6. Thứ tự ưu tiên
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 << >> >>> Relational < > <= >= instanceof Equality == != Bitwise AND & Bitwise exclusive OR ^ Bitwise inclusive OR | Logical AND && Logical OR || Conditional (ternary) ?: Assignment = *= /= %= += -= >>= <<= >>>= &= ^= |=
Department of Software Engineering 33
11
4.7. 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 */
Department of Software Engineering 34
4.8. 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ụ :
System.out.println( "This is part of the same line");
a=0; b=1; c=2;
Department of Software Engineering 35
Nội dung
1. Định danh 2. Các kiểu dữ liệu 3. Hằng 4. Toán tử 5. Cấu trúc điều khiển 6. Mảng
Department of Software Engineering 36
12
5.1. Cấu trúc rẽ nhánh
a. Câu lệnh if - else: Cú pháp
Biểu thức điều kiện nhận giá trị boolean Mệnh đề else là tùy chọn Các dấu ngoặc nhọn là không cần thiết với các câu lệnh đơn, nhưng nên sử dụng để tăng sự rõ ràng.
Department of Software Engineering 37
5.1. Cấu trúc rẽ nhánh (2)
a. Câu lệnh if - else (tiếp): Ví dụ:
if (x > 10) { if (x != 20) { System.out.println("x is not 20"); } else { System.out.println("x = " + x); } } else { System.out.println("x is less than 11"); }
Department of Software Engineering 38
5.1. Cấu trúc rẽ nhánh (3)
a. Câu lệnh if - else (tiếp): 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+ "is an even number"); else System.out.println (num +"is an odd number"); } }
Department of Software Engineering 39
13
5.1. Cấu trúc rẽ nhánh (4)
a. Câu lệnh if - else (tiếp): Dạng rút gọn của câu lệnh if-else: Có thể viết mã ngắn hơn Đảm bảo mã nguồn vẫn dễ đọc
if (x>LIMIT) { warning = "Too Big"; } else { warning = null; }
warning = (x>LIMIT) ? "Too Big" : null ;
Department of Software Engineering 40
5.1. Cấu trúc rẽ nhánh (5)
b. 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
case a
[false]
[true case a] action(s)
[true
break
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 b
case z
[false]
. . .
[false]
]
[true ]
case b action(s)
case z action(s)
break
break
case:
default action(s)
Department of Software Engineering 41
5.1. Cấu trúc rẽ nhánh (5)
b. Câu lệnh switch - case (tiếp):
switch (day) { case 0: case 1: rule = "weekend"; break; case 2: ... case 6: rule = "weekday"; break; default: rule = "error";}
if (day == 0 || day == 1) { rule = "weekend"; } else if (day > 1 && day <7) { rule = "weekday"; } else { rule = error;
}
Department of Software Engineering 42
14
5.2. Cấu trúc lặp
a. 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
action state
int x = 2; while (x < 2) { x++; System.out.println(x);
condition
[false]
[true]
} int x = 2; do { x++; System.out.println(x); } while (x < 2);
Department of Software Engineering 43
5.2. Cấu trúc lặp (2)
Ví dụ:
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); } }
Department of Software Engineering 44
5.2. Cấu trúc lặp (2) b. Vòng lặp for:
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
for (int index = 0; index < 10; index++) { System.out.println(index); }
Department of Software Engineering 45
15
5.2. Cấu trúc lặp (2)
Ví dụ: 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); } }
Department of Software Engineering 46
5.2. Cấu trúc lặp (2)
So sánh vòng lặp for và while: Các câu lệnh for và while cung cấp chức năng tương đương nhau Các cấu trúc lặp thường được sử dụng trong các tình hống khác nhau while được sử dụng cho lặp từ đầu đến cuối for được sử dụng để lặp với số vòng lặp cố định
int sum = 0; for (int index = 1;index <= 10;index++) { sum += index; }
int sum = 0; int index = 1; while (index <= 10) { sum += index; index++; }
Department of Software Engineering 47
5.3. 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
Department of Software Engineering 48
16
5.3. Các lệnh thay đổi cấu trúc điều khiển
continue Tương tự như break, nhưng nó sẽ 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 return Thoát khỏi phương thức hiện thời, có thể trả về một biểu thức Phải phù hợp với kiểu trả về return;: nghĩa là không trả về giá trị
Department of Software Engineering 49
5.3. Các lệnh thay đổi cấu trúc điều khiển
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; }
Department of Software Engineering 50
5.4. Phạm vi của 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 đó
Department of Software Engineering 51
17
Nội dung
1. Định danh 2. Các kiểu dữ liệu 3. Hằng 4. Toán tử 5. Cấu trúc điều khiển 6. Mảng
Department of Software Engineering 52
6. 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:
Ví dụ: boolean bit[] = new boolean[6];
variableName
reference Array or Object
Department of Software Engineering 53
6. Mảng (array)
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
Department of Software Engineering 54
18
6. 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"
Department of Software Engineering 55
6. Mảng (3)
Tên của mảng (tất cả các thành phần trong mảng có cùng tên, c)
c.length: cho biết độ dài của mảng 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
Department of Software Engineering 56
6. Mảng (4)
Khai báo mảng:
Cách khai báo Chỉ đơn thuần khai báo
Mô tả Chỉ đơn thuần khai báo mảng
Cú pháp Datatype identifier[]
Ví dụ char ch[ ]; khai báo mảng ký tự có tên ch
Khai báo và tạo mảng
Khai báo, kiến tạo và khởi tạo
Khai báo và cấp phát bộ nhớ cho các phần tử mảng sử dụng toán tử "new' Khai báo mảng,cấp phát bộ nhớ cho nó và gán các giá trị ban đầu cho các phần tử của mảng
Datatype identifier[] = new datatype [size ]
Datatype identifier[] = {value1,value2...valueN};
char ch[] = new char [10 ]; Khai báo một mảng ch và lưu trữ 10 ký tự char ch [] = {'A','B','C','D'}; khai báo mảng ch và lưu 4 chữ cái kiểu ký tự
Department of Software Engineering 57
19
6. Mảng (5)
Ví dụ: int array[]; // khai báo array = new int[10]; // tạo mảng
int array[] = {32,27,64,18,95,14,90,70,60,37};
Department of Software Engineering 58
6. Mảng (6)
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];
Department of Software Engineering 59
6. Mảng (7)
Column 0 Column 1 Column 2 Column 3
Row 0
Row 1
Row 2
b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]
b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ]
b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ]
Chỉ số cột
Chỉ số hàng
Tên mảng
Department of Software Engineering 60
20
Bài tập
Sẽ giao trong buổi học lý thuyết
Department of Software Engineering 61
Department of Software Engineering 62
21
Bạn đang đọc truyện trên: AzTruyen.Top