Giáo trình Lập trình Java cơ bản

Contents

 

1 CHƯƠNG 1 CÁC KHÁI NIỆM CƠ BẢN 10

1.1 LÀM QUEN VỚI JAVA 10

1.1.1 Lịch sử java 10

1.1.2 Java em là ai? 10

1.1.3 Một số đặc trưng của java 11

1.1.4 Các kiểu ứng dụng Java 13

1.1.5 Máy ảo Java (JVM-Java Virtual Machine) 14

1.2 NỀN TẢNG CỦA JAVA 15

1.2.1 Tập ký tự dùng trong java 15

1.2.2 Từ khoá của Java 15

1.2.3 Định danh (tên) trong java 17

1.2.4 Cấu trúc một chương trình java 18

1.2.5 Chương trình JAVA đầu tiên 20

1.2.6 Chú thích trong chương trình 22

1.2.7 Kiểu dữ liệu 22

1.2.7.1 Các kiểu dữ liệu nguyên thuỷ 22

1.2.7.2 Kiểu tham chiếu 23

1.2.8 Khai báo biến 23

1.2.9 Phạm vi biến 24

1.2.10 Một số phép toán trên kiểu dữ liệu nguyên thuỷ 25

1.2.10.1 Phép gán 25

1.2.10.2 Toán tử toán học 26

1.2.10.3 Toán tử tăng, giảm 26

1.2.10.4 Phép toán quan hệ 27

1.2.10.5 Phép toán logic 29

1.2.10.6 Phép toán thao tác trên bit 30

1.2.10.7 Toán tử gán tắt 32

1.2.10.8 Toán tử dẫy 32

1.2.11 Thứ tự ưu tiên của các phép toán 32

1.2.12 Toán tử chuyển kiểu 33

1.2.12.1 Chuyển đổi kiểu không tường minh 33

1.2.12.2 Chuyển đổi kiểu tường minh 34

1.2.13 Các hàm toán học 35

1.2.14 Các phép toán trên kiểu kí tự 37

1.3 ĐIỀU KHIỂN LUỒNG CHƯƠNG TRÌNH 37

1.3.1 Cấu trúc rẽ nhánh 37

1.3.1.1 Phát biểu if 37

1.3.1.2 Biểu thức điều kiện 38

1.3.1.3 Cấu trúc switch 38

1.3.1.4 Toán tử điều kiện 40

1.3.2 Cấu trúc lặp 40

1.3.2.1 Lặp kiểm tra điều kiện trước - while 40

1.3.2.2 Lặp kiểm tra điều kiện sau - do.while 41

1.3.3 Cấu trúc for 42

1.3.4 Lệnh break và continue 44

2 CHƯƠNG 2 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 48

2.1 ĐỊNH NGHĨA LỚP 48

2.1.1 Khai báo lớp 48

2.1.1.1 Khai báo thuộc tính 50

2.1.1.2 Khai báo phương thức 51

2.1.2 Chi tiết về khai báo một phương thức 52

2.1.2.1 Tổng quát 52

2.1.2.2 Nhận giá trị trả về từ phương thức 53

2.1.2.3 Truyền tham số cho phương thức 53

2.1.2.3.1 Kiểu tham số 54

2.1.2.3.2 Tên tham số 54

2.1.2.3.3 Truyền tham số theo trị 54

2.1.2.4 Thân của phương thức 55

2.1.3 Từ khoá this 55

2.1.4 Từ khoá super 56

2.1.5 Sử dụng lớp 57

2.1.6 Điều khiển việc truy cập đến các thành viên của một lớp 57

2.1.6.1 Các thành phần private 57

2.1.6.2 Các thành phần protected 58

2.1.6.3 Các thành phần public 58

2.1.6.4 Các thành phần có mức truy xuất gói 59

2.2 KHỞI ĐẦU VÀ DỌN DẸP 59

2.2.1 Phương thức tạo dựng (constructor) 59

2.2.1.1 Công dụng 59

2.2.1.2 Cách viết hàm tạo 59

2.2.1.3 Hàm tạo mặc định 60

2.2.1.4 Gọi hàm tạo từ hàm tạo 61

2.2.2 Khối khởi đầu vô danh và khối khởi đầu tĩnh 62

2.2.2.1 Khối vô danh 62

2.2.2.2 Khối khởi đầu tĩnh 64

2.2.3 Dọn dẹp kết thúc và thu rác 65

2.2.3.1 Phương thức finalize 65

2.2.3.2 Cơ chế gom rác của java 65

2.3 CÁC THÀNH PHẦN TĨNH 66

2.3.1 Thuộc tính tĩnh 66

2.3.2 Phương thức tĩnh 66

2.4 NẠP CHỒNG PHƯƠNG THỨC 67

2.4.1 Khái niệm về phương thức bội tải 67

2.4.2 Yêu cầu của các phương thức bội tải 67

2.5 KẾ THỪA (INHERITANCE) 68

2.5.1 Lớp cơ sở và lớp dẫn xuất 68

2.5.2 Cách xây dựng lớp dẫn xuất 68

2.5.3 Thừa kế các thuộc tính 69

2.5.4 Thừa kế phương thức 69

2.5.5 Khởi đầu lớp cơ sở 69

2.5.5.1 Trật tự khởi đầu 72

2.5.5.2 Trật tự dọn dẹp 72

2.5.6 Ghi đè phương thức (Override) 72

2.5.7 Thành phần protected 72

2.5.8 Từ khoá final 72

2.5.8.1 Thuộc tính final 73

2.5.8.2 Đối số final 73

2.5.8.3 Phương thức final 74

2.5.8.4 Lớp final 74

2.6 LỚP CƠ SỞ TRỪU TƯỢNG 74

2.7 ĐA HÌNH THÁI 75

2.7.1 Các bước để tạo đa hình thái 75

2.7.2 Khái niệm về tạo khuôn lên, tạo khuôn xuống 75

2.8 GIAO DIỆN, LỚP TRONG, GÓI 76

2.8.1 Giao diện 76

2.8.1.1 Phần khai báo của giao diện 77

2.8.1.2 Phần thân 77

2.8.1.3 Triển khai giao diện 78

2.8.2 Lớp trong 79

2.9 MẢNG, XÂU KÝ TỰ VÀ TẬP HỢP 80

2.9.1 Mảng 80

2.9.1.1 Mảng 1 chiều 80

2.9.1.1.1 Khai báo 80

2.9.1.1.2 Truy xất đến các phần tử của mảng một chiều 82

2.9.1.1.3 Lấy về số phần tử hiện tại của mảng 82

2.9.1.2 Mảng nhiều chiều 83

2.9.1.2.1 Khai báo 83

2.9.1.2.2 Truy xuất đến phần tử mảng nhiều chiều 84

2.9.2 Xâu ký tự 85

2.9.2.1 Lớp String 85

2.9.2.1.1 Các phương thức của lớp String 86

2.9.2.2 Lớp StringBuffer 89

2.9.2.2.1 Các phương thức lớp StringBuffer 91

2.9.2.3 Lớp StringTokenizer 93

2.9.3 Một số lớp cơ bản của Java 95

2.9.3.1 Lớp Object 96

2.9.3.2 Các lớp bao kiểu nguyên thủy (Wrapper class) 96

2.9.3.2.1 Các toán tử tạo lập chung 97

2.9.3.2.2 Các hàm valueOf(String s) 97

2.9.3.2.3 Hàm toString() 98

2.9.3.2.4 Hàm equals() 98

2.9.3.3 Lớp Boolean 98

2.9.3.4 Lớp Character 99

2.9.3.5 Các lớp bao kiểu số 99

2.9.3.5.1 Các hàm typeValue() 99

2.9.3.5.2 Các hàm parseType(String s) 100

2.9.3.6 Lớp Void 101

2.9.3.7 Lớp Math 101

2.9.3.7.1 Hàm abs() 102

2.9.3.7.2 Các hàm làm tròn 102

2.9.3.7.3 Hàm max(); min() 102

2.9.3.7.4 Các hàm lũy thừa 103

2.9.3.7.5 Các hàm lượng giác 103

2.9.4 Các lớp tập hợp 103

Phần giao diện 104

Phần cài đặt 104

Phần thuật toán 105

2.9.4.1 Collection 106

2.9.4.2 Set (tập hợp) 107

2.9.4.2.1 HashSet 107

2.9.4.2.2 SortedSet 109

2.9.4.3 List (danh sách) 109

2.9.4.4 Map (ánh xạ) 111

2.9.4.5 Các lớp HashMap và HashTable 112

2.9.4.6 SortedSet và SortedMap 113

2.9.4.6.1 Giao diện SortedSet 114

2.9.4.6.2 Giao diện SortedMap 114

2.9.4.7 Lớp TreeSet và TreeMap 115

3 CHƯƠNG 3 XỬ LÝ NGOẠI LỆ 116

3.1 Mục đích của việc xử lý ngoại lệ 116

3.2 Mô hình xử lý ngoại lệ của java 117

3.3 Đặc tả ngoại lệ 117

3.4 Ném ra ngoại lệ 118

3.5 Bắt ngoại lệ 118

3.6 Khối ‘finally’ 120

3.7 Một số lớp ngoại lệ chuẩn của Java 121

4 CHƯƠNG 4 LẬP TRÌNH ĐA TUYẾN 123

4.1 Các kiến thức liên quan 123

4.1.1 Tiến trình ( process) 123

4.1.2 Tiểu trình (thread) 123

4.1.3 Hệ điều hành đơn nhiệm, đa nhiệm 123

4.1.4 Các trạng thái của tiến trình 124

4.1.5 Miền găng (Critical Section) 124

4.1.5.1 Vấn đề tranh chấp tài nguyên 124

4.1.5.2 Miền găng (Critical Section) 125

4.1.6 Khoá chết (deadlock) 125

4.2 Lập trình đa tuyến trong Java 125

4.2.1 Lớp Thread 126

4.2.2 Vòng đời của Thread 129

4.2.3 Luồng chạy ngầm (deamon) 130

4.2.4 Giao diện Runnable 130

4.2.5 Thiết lập độ ưu tiên cho tuyến 131

4.2.6 Nhóm tuyến (Thread Group) 132

4.2.7 Đồng bộ các tuyến thi hành 132

5 CHƯƠNG 5 NHẬP XUẤT 134

5.1 Lớp luồng 135

5.2 Lớp nhập, xuất hướng kí tự 135

5.3 Luồng hướng byte 136

5.4 Sự tương tự giữa hai luồng hướng byte và hướng kí tự 136

5.5 Xử lý tệp tin 137

5.6 Luồng dữ liệu 139

5.7 Luồng in ấn 141

5.7.1 Một số phương thức của lớp PrintStream: 141

5.7.2 Hàm tạo của lớp PrintStream 142

5.7.3 Một số phương thức của lớp PrintWriter 142

5.7.4 Các hàm tạo của lớp PrintWriter 143

5.8 Luồng đệm 144

5.9 Tệp tin truy cập ngẫu nhiên 145

5.10 Lớp File 147

6 CHƯƠNG 6 LẬP TRÌNH ĐỒ HOẠ 151

6.1 Giới thiệu về hệ thống đồ hoạ của Java 151

6.1.1 Giới thiệu chung 151

6.1.2 Một số phương thức của lớp Component 153

6.1.3 Lớp Container 154

6.1.4 Tạo ra Frame 154

6.2 Trình quản lý hiển thị trong Java 155

6.2.1 Lớp FlowLayout 157

6.2.2 Lớp GridLayout 157

6.2.3 Lớp BorderLayout 158

6.3 Xử lý sự kiện trong Java 158

6.3.1 Ý nghĩa của các lớp 159

6.3.1.1 ActionEvent 159

6.3.1.2 AdjustmentEvent 159

6.3.1.3 ItemEvent 159

6.3.1.4 TextEvent 159

6.3.1.5 ComponentEvent 161

6.3.1.6 ContainerEvent 161

6.3.1.7 FocusEvent 161

6.3.1.8 KeyEvent 161

6.3.1.9 MouseEvent 161

6.3.1.10 PaintEvent 162

6.3.1.11 WindowEvent 162

6.3.2 Một số lớp điều hợp 163

 

 

docx162 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2549 | Lượt tải: 5download
Tóm tắt nội dung Giáo trình Lập trình 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
n của lớp Window) được sử dụng để tạo ra những cửa sổ cho các giao diện ứng dụng GUI.
Kịch bản chung để tạo ra một cửa sổ là:
Tạo ra một frame có tiêu đề gì đó, ví dụ “My Frame” : 
JFrame myWindow= new JFrame(“My Frame”);
Xây dựng một cấu trúc phân cấp các thành phần bằng cách sử dụng hàm 
myWindow.getContentPane().add() để bổ sung thêm JPanel hoặc những thành phần giao diện khác vào Frame:
Ví dụ: 
myWindow.getContentPane().add(new JButton(“OK”));
// Đưa vào một nút (JButton) có tên “OK” vào frame
Đặt lại kích thước cho frame sử dụng hàm setSize():
myWindow.setSize(200, 300);// Đặt lại khung frame là 200 ( 300
Gói khung frame đó lại bằng hàm pack(): myWindow.pack();
5. Cho hiện frame: myWindow.setVisible(true);
Trình quản lý hiển thị trong Java
Khi thiết kế giao diện đồ họa cho một ứng dụng, chúng ta phải quan tâm đến kích thước và cách bố trí (layout) các thành phần giao diện như: JButton, JCheckbox, JTextField, v.v. sao cho tiện lợi nhất đối với người sử dụng. Java có các lớp đảm nhiệm những công việc trên và quản lý các thành phần giao diện GUI bên trong các vật chứa.
Bảng sau cung cấp bốn lớp quản lý layout (cách bố trí và sắp xếp) các thành phần GUI.
Tên lớp
Mô tả
FlowLayout
Xếp các thành phần giao diện trước tiên theo hàng từ trái qua phải, sau đó theo cột từ trên xuống dưới. Cách sắp xếp này là mặc định đối với Panel, JPanel ,Applet và JApplet.
GridLayout
Các thành phần giao diện được sắp xếp trong các ô lưới hình chữ nhật lần lượt theo hàng từ trái qua phải và theo cột từ trên xuống dưới trong một phần tử chứa. Mỗi thành phần giao diện chứa trong một ô.
BorderLayout
Các thành phần giao diện (ít hơn 5) được đặt vào các vị trí theo các hướng: north (bắc), south (nam), west (tây), east (đông) và center (trung tâm)). Cách sắp xếp này là mặc định đối với lớp Window, Frame, Jframe, Dialog và JDialog.
GridBagLayout
Cho phép đặt các thành phần giao diện vào lưới hình chữ nhật, nhưng một thành phần có thể chiếm nhiều nhiều hơn một ô.
null
Các thành phần bên trong vật chứa không được sẵp lại khi kích thước của vật chứa thay đổi.
Các phương pháp thiết đặt layout:
Để lấy về layout hay để đặt lại layout cho vật chứa, chúng ta có thể sử dụng hai phương thức của lớp Container:
LayoutManager getLayout();
void setLayout(LayoutManager mgr);
Các thành phần giao diện sau khi đã được tạo ra thì phải được đưa vào một phần tử chứa nào đó. Hàm add() của lớp Container được nạp chồng để thực hiện nhiệm vụ đưa các thành phần vào phần tử chứa:
Component add(Component comp)
Component add(Component comp, int index)
Cmponent add(Component comp, Object constraints)
Cmponent add(Component comp, Object constraints, int index)
Trong đó, đối số index được sử dụng để chỉ ra vị trí của ô cần đặt thành phần giao diện comp vào. Đối số constraints xác định các hướng để đưa comp vào phần tử chứa.
Ngược lại, khi cần loại ra khỏi phần tử chứa một thành phần giao diện thì sử dụng các hàm sau:
void remove(int index)
void remove(Component comp)
void removeAll()
Lớp FlowLayout
Lớp FlowLayout cung cấp các hàm tạo lập để sắp hàng các thành phần giao diện:
FlowLayout() FlowLayout(int aligment)
FlowLayout(int aligment, int horizongap, int verticalgap)
public static final int LEFT 
public static final int CENTER 
public static final int RIGHT
Đối số aligment xác định cách sắp theo hàng: từ trái, phải hay trung tâm, horizongap và verticalgap là khoảng cách tính theo pixel giữa các hàng các cột. Trường hợp mặc định thì khoảng cách giữa các hàng, cột là 5 pixel.
Lớp GridLayout
Lớp GridLayout cung cấp các hàm tạo lập để sắp hàng các thành phần giao diện:
GridLayout()
GridLayout(int rows, int columns)
GridLayout(int rows, int columns, int hoiongap, int verticalgap)
Tạo ra một lưới hình chữ nhật có rows ( columns ô có khoảng cách giữa các hàng các cột là horizongap, verticalgap. Một trong hai đối số rows hoặc columns có thể là 0, nhưng không thể cả hai, GridLayout(1,0) là tạo ra lưới có một hàng.
Lớp BorderLayout
Lớp BorderLayout cho phép đặt một thành phần giao diện vào một trong bốn hướng: bắc (NORTH), nam (SOUTH), đông (EAST), tây (WEST) và ở giữa (CENTER):
public static final String NORTH 
public static final String SOUTH 
public static final String EAST 
public static final String WEST 
public static final String CENTER
BorderLayout()
BorderLayout(int horizongap, int verticalgap)
Tạo ra một layout mặc định hoặc có khoảng cách giữa các thành phần (tính bằng pixel) là horizongap theo hàng và verticalgap theo cột.
Component add(Component comp)
void add(Component comp, Object constraint)
Trường hợp mặc định là CENTER, ngược lại, có thể chỉ định hướng để đặt các thành phần comp vào phần tử chứa theo constraint là một trong các hằng trên.
 Xử lý sự kiện trong Java
Các ứng dụng với GUI thường được hướng dẫn bởi các sự kiện (event). Việc nhấn một nút, mở, đóng các Window hay gõ các ký tự từ bàn phím, v.v. đều tạo ra các sự kiện (event) và được gửi tới cho chương trình ứng dụng. Trong Java các sự kiện được thể hiện bằng các đối tượng. Lớp cơ sở nhất, lớp cha của tất cả các lớp con của các sự kiện là lớp java.util.EventObject.
Hình H7-20 Các lớp xử lý các sự kiện
Các lớp con của AWTEvent được chia thành hai nhóm:
Các lớp mô tả về ngữ nghĩa của các sự kiện
2. Các lớp sự kiện ở mức thấp.
Ý nghĩa của các lớp 
ActionEvent
Sự kiện này được phát sinh bởi những hoạt thực hiện trên các thành phần của GUI. Các thành phần gây ra các sự kiện hành động bao gồm:
JButton - khi một nút button được khích hoạt,
JList - khi một mục trong danh sách được kích hoạt đúp,
JmenuItem, JcheckBoxMenu, JradioMenu - khi một mục trong thực đơn được chọn,
JTextField - khi gõ phím ENTER trong trường văn bản (text).
AdjustmentEvent
Sự kiện này xẩy ra khi ta điều chỉnh (adjustment) giá trị thanh cuốn (JScollBar):
Scrollbar - khi thực hiện một lần căn chỉnh trong thanh trượt Scrollbar. 
Lớp này có phương thức int getValue()-cho lại giá trị hiện thời được xác định bởi lần căn chỉnh sau cùng.
ItemEvent
Các thành phần của GUI gây ra các sự kiện về các mục gồm có:
JCheckbox - khi trạng thái của hộp kiểm tra Checkbox thay đổi.
CheckboxMenuItem - khi trạng thái của hộp kiểm tra Checkbox ứng với mục của thực đơn thay đổi.
JRadioButton- khi trạng thái của hộp chọn (Option) thay đổi.
JList - khi một mục trong danh sách được chọn hoặc bị loại bỏ chọn.
JCompoBox - khi một mục trong danh sách được chọn hoặc bị loại bỏ chọn.
Lớp ItemEvent có phương thức Object getItem()-Cho lại đối tượng được chọn hay vừa bị bỏ chọn.
TextEvent
Các thành phần của GUI gây ra các sự kiện về text gồm có:
TextArea - khi kết thúc bằng nhấn nút ENTER,
TextField - khi kết thúc bằng nhấn nút ENTER.
ComponentEvent
Sự kiện này xuất hiện khi một thành phần bị ẩn đi/hiển ra hoặc thay thay đổi lại kích thước.
Lớp ComponentEvent có phương thức Component getComponent()-Cho lại đối tượng tham chiếu kiểu Component.
ContainerEvent
Sự kiện này xuất hiện khi một thành phần được bổ sung hay bị loại bỏ khỏi vật chứa (Container).
FocusEvent
Sự kiện loại này xuất hiện khi một thành phần nhận hoặc mất focus.
KeyEvent
Lớp KeyEvent là lớp con của lớp trừu tượng InputEvent được sử dụng để
xử lý các sự kiện liên quan đến các phím của bàn phím.
Lớp này có các phương thức:
int getKeyCode() - Đối với các sự kiện KEY_PRESSED hoặc KEY_RELEASED, hàm này được sử dụng để nhận lại giá trị nguyên tương ứng với mã của phím trên bàn phím.
char getKeyChar() - Đối với các sự kiện KEY_PRESSED, hàm này được sử dụng để nhận lại giá trị nguyên, mã Unicode tương ứng với ký tự của bàn phím.
MouseEvent
Lớp MouseEvent là lớp con của lớp trừu tượng InputEvent được sử dụng để xử lý các tín hiệu của chuột. 
Lớp này có các phương thức:
int getX()
int getY()
Point getPoint()
Các hàm này được sử dụng để nhận lại tọa độ x, y của vị trí liên quan đến sự kiện do chuột gây ra.
void translatePoint(int dx, int dy)
Hàm translate() được sử dụng để chuyển tọa độ của sự kiện do chuột gây ra đến (dx, dy).
int getClickCount()
Hàm getClickCount() đếm số lần kích chuột.
PaintEvent
Sự kiện này xuất hiện khi một thành phần được vẽ lại, thực tế sự kiện này xẩy ra khi phương thức paint()/ update() được gọi đến.
WindowEvent
Sự kiện loại này xuất hiện khi thao tác với các Window, chẳng hạn như: đóng, phóng to, thu nhỏ... một cửa sổ. 
Lớp này có phương thức Window getWindow()-Hàm này cho lại đối tượng của lớp Window ứng với sự kiện liên quan đến Window đã xảy ra.
Kiểu sự kiện
Nguồn gây ra sự kiện
Phương thức đang ký, gõ bỏ đối tượng lắng nghe
Giao diện Listener lắng nghe tương ứng
AcitionEvent
Jbutton
JList
TexField
addComponentlistener
removeActiontListener
AcitionListener
AdjustmentEvent
JScrollbar
addAdjustmentListener
removeAdjustmentListener
AdjustmentListener
ItemEvent
JCheckbox
JCheckboxMenuItem
JRadioButton JList JCompoBox
addItemListener
removeItemListener
ItemListener
TextEvent
JTextArea JTexField JTextPane
JEditorPane
addTexListener removeTextListener
TextListener
ComponentEvent
Component
addComponentListener
removeComponentListener
ComponentListener
ContainerEvent
Container
addContainerListener removeContainerListener
ContainerListen er
FocusEvent
Component
addFocusListener
removeFocusListener
FocusListener
KeyEvent
Component
addkeyListener
removeKeyListener
KeyListener
MouseEvent
Component
addMouseListener remoMouseListener addMouseMotionListener
remoMouseMotionListener
MouseMotionLi stener
WindowEvent
Window
addWindowListener
removeWindowListener
WindowListener
Một số lớp điều hợp
Giao diện Listener lắng nghe
Lớp điều hợp tương ứng
AcitionListener
Không có lớp điều hợp tương ứng
AdjustmentListener
AdjustmentAdapter
ItemListener
Không có lớp điều hợp tương ứng
TextListener
Không có lớp điều hợp tương ứng
ComponentListener
ComponentAdapter
ContainerListener
ContainerAdapter
FocusListener
FocusAdapter
KeyListener
KeyAdapter
MouseMotionListener
MouseMotionAdapter
WindowListener
WindowAdapter

File đính kèm:

  • docxGiáo trình Lập trình Java cơ bản.docx
Tài liệu liên quan