Giáo trình ngôn ngữ lập trình Java
MỤCLỤC
Chơng 1: GIỚITHIỆUTỔNG QUANVỀ NGÔN NGỮLẬP
TRÌNH JAVA . 7
1.1.Mở đầu . 7
1.2. Giới thiệuvề ngôn ngữlập trình Java . 7
1.2.1. Java l à gì? . 7
1.2.2. Lịchsử phát tri ểncủa ngôn ngữlập trình Java . 7
1.2.3. Mộtsố đặc đi ểmnổi bậccủa ngôn ngữl ập trì nh Java
. 8
1.3. Các ứngdụng Java . 10
1.3.1. Java và ứngdụng Consol e . 10
1.3.2. Java và ứngdụng Applet . 11
1.3.3. Java và phát tri ển ứngdụng Desktop dùng AWT và
JFC . 12
1.3.4. Java và phát tri ển ứngdụng Web . 13
1.3.5. Java và phát tri ển các ứngdụng nhúng . 14
1.4.Dịch và thực thi một chơng trình viếtbằng Java . 14
1.5. Chơng trình Java đầu ti ên. 15
1.5.1. Tạo chơng trình nguồn Hell oWordApp . 15
1.5.2. Bi êndịchtập tin nguồn Hell oWordApp. 16
1.5.3. Chạy chơng trình Hell oWordApp . 16
1.5.4. Cấu trúc chơng trình Hell oWordApp . 17
Sửdụng phơng thức/biếncủalớp . 17
1.6. Côngcụl ập trình và chơng trìnhdị ch. 17
1.6.1. J2SDK . 17
1.6.2. Côngcụ soạn thảo mã nguồn Java. . 18
Chơng 2: . 21
HẰNG, BIẾN, KIỂUDỮ LIỆU, . 21
TOÁNTỬ, BIỂU THỨC VÀ CÁC . 21
CẤUTRÚC ĐIỀU KHIỂN TRONG JAVA . 21
2.1. Biến . 21
2.2. Các kiểudữ liệucơsở . 23
2.2.1. Kiểusố nguyên . 24
2.2.2. Kiểudấu chấm động. 26
2
2.2.3. Kiểu kýtự (char) . 26
2.2.4. Kiểu luận lý (bool ean) . 27
2.3.Hằng: . 27
2.4.Lệnh, khối lệnh trong j ava. 28
2.5. Toántử và biểu thức . 29
2.5.1. Toántửsốhọc. 29
2.5.2. Toántử trên bi t . 29
2.5.3. Toántử quanhệ & l ogi c . 29
2.5.4. Toántử ép kiểu . 30
2.5.5. Toántử đi ều kiện . 30
2.5.6. Thứtự ưu ti ên . 30
2.6.Cấu trúc đi ều khiển . 31
2.6.1. Cấu trúc đi ều kiện if else . 31
2.6.2. Cấu trúc swi tch case . 32
2.6.3. Cấu trúcl ặp . 32
2.6.4. Cấu trúcl ệnh nhảy (jump) . 33
2.7.Lớp bao kiểudữ liệucơsở (Wrapper Cl ass) . 33
2.8. Kiểudữ liệumảng. 34
2.8.1. Khái niệmmảng . 34
2.8.2. Khai báomảng . 34
2.8.3. Cấp phátbộ nhớ chomảng . 35
2.8.4. Khởi tạomảng. 35
2.8.5. Truycậpmảng . 35
2.9.Mộtsố ví dụ minhhọa: . 36
Chơng 3:HƯỚNG ĐỐITƯỢNG TRONG JAVA . 47
3.1.Mở đầu . 47
3.2.Lớp (Cl ass) . 48
3.2.1. Khái niệm . 48
3.2.2. Khai báo/định nghĩalớp . 48
3.2.3. Tạo đối tợngcủalớp . 49
3.2.4. Thuộc tínhcủalớp . 49
3.2.5. Hàm - Phơng thứclớp (Method). 50
3.2.6. Khởi tạomột đối tợng (Constructor). 52
3.2.7. Biến this . 53
3
3.2.8. Khai báo chồng phơng thức (overl oadi ng method)
. 54
3.3. Đặc điểmhớng đối tợng trong j ava . 54
3.3.1. Đóng gói (encapsulati on) . 55
3.3.2. Tí nh đa hình (polymorphism): . 55
3.3.3. Tí nhkế thừa (inheri tance) . 57
3.4. Gói (packages) . 62
3.5. Giao diện (interface) . 63
3.5.1. Khái niệm interface: . 63
3.5.2. Khai báo interface: . 64
3.5.3. Ví dụ minhhọa. 65
Chơng 4:THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG . 82
4.1.Mở đầu . 82
4.2. Giới thiệu thư viện awt. 83
4.3. Các khái niệmcơbản . 83
4.3.1. Component . 83
4.3.2. Container . 84
4.3.3. Layout Manager . 85
4.4.Thiếtkế GUI cho chơng trình . 86
4.4.1. Tạo khung chứacửasổ chơng trình . 86
4.4.2. Tạohệ thống thực đơn. 87
4.4.3. Gắn Component vào khung chứa . 89
4.4.4. Trình bày các Component trong khung chứa . 90
4.4.5. Các đối tợng khung chứa Container . 101
4.5.Xử lý biếncố/sự kiện . 105
4.5.1. Mô hìnhxử lýsự kiện (Event-Handling Model ) . 105
4.5.2. Xử lýsự kiện chuột . 108
4.5.3. Xử lýsự kiện bàn phím . 111
4.6.Mộtsố ví dụ minhhọa . 115
Chơng 5: LUỒNG VÀTẬPTIN . 128
5.1.Mở đầu . 128
5.2. Luồng (Streams) . 129
5.2.1. Khái niệm luồng . 129
5.2.2. Luồng byte (Byte Streams) . 129
5.2.3. Luồng kýtự (Character Streams) . 131
4
5.2.4. Những luồng đợc định nghĩ a trớc (The Predef i ned
Streams) . 132
5.3.Sửdụng luồng Byte . 133
5.3.1. Đọcdữ liệutừ Consol e . 134
5.3.2. Xuấtdữ liệu ra Consol e . 135
5.3.3. Đọc và ghi file dùng luồng Byte . 136
5.3.4. Đọc và ghi dữ liệu nhị phân. 141
5.4. File truycập ngẫu nhiên (Random Access Files) . 145
5.5.Sửdụng luồng kýtự . 147
5.5.1. Nhập Console dùng luồng kýtự . 149
5.5.2. Xuất Console dùng luồng kýtự . 151
5.5.3. Đọc/ghi File dùng luồng kýtự . 152
5.6.Lớp File . 155
Chơng 6:LẬPTRÌNHCƠSỞDỮ LIỆU . 158
6.1. GIỚITHIỆU. 158
6.2. KIẾNTRÚC JDBC. 158
6.3. Các khái niệmcơbản . 160
6.3.1. JDBC Driver . 160
6.3.2. JDBC URL . 162
6.4.KẾT NỐI CSDLVỚI JDBC . 163
6.4.1. Đăng ký trình đi ều khiển . 163
6.4.2. Thực hiệnkếtnối . 163
6.4.3. Ví dụ . 164
6.5. KIỂUDỮ LIỆU SQL VÀ KIỂUDỮ LIỆU JAVA. 168
6.6. CÁCTHAOTÁCCƠBẢNTRÊN CSDL . 170
6.6.1. Cáclớpcơbản . 170
6.6.2. Ví dụ truyvấn CSDL . 171
6.6.3. Ví dụcập nhật CSDL . 174
Tài liệu tham khảo: . 176
Phụl ục A:Trắc nghiệm kiến thức. 177
PhụLục B:Đáp án trắc nghiệm kiến thức . 205
ter: 2 b. Kết quả trên màn hình là: Before: 0 After: 1 c. Lỗi biên dịch ở dòng 4 của lớp Nightingale vì không thể overidde thành viên static d. Lỗi biên dịch ở dòng 10 của lớp Nightingale vì phương thức fly() là protected trong lớp cha. 59. Chọn phát biểu đúng a. Chỉ kiểu dữ liệu cơ sở mới được chuyển đổi kiểu tự động; để chuyển đổi kiểu dữ liệu của biến tham chiểu phải sử dụng phép ép kiểu b. Chỉ biến tham chiếu mới được chuyển đổi kiểu tự động; để chuyển kiểu của 1 biến kiểu cơ sở phải sử dụng phép toán ép kiểu c. Cả kiểu dữ liệu cơ sở và kiểu tham chiếu đều có thể chuyển đổi tự động và ép kiểu d. Phép ép kiểu đối với dữ liệu số có thể cần phép kiểm tra khi thực thi 60. Dòng lệnh nào sau đây sẽ không thể biên dịch: 1 : byte b = 5; 2 : char c = ‘5’; 3 : short s = 55; 4 : int i = 555; 5 : float f = 555.5f; 6 : b = s; 7 : i = c; 8 : if (f > b) 9 : f = i; a. Dòng 3 b. Dòng 4 c. Dòng 5 d. Dòng 6 61. Chọn dòng phát sinh lỗi khi biên dịch 196 1 : byte b = 2; 2 : byte b1 = 3; 3 : b = b * b1; a. Dòng 1 b. Dòng 2 c. Dòng 3 d. Tất cả các câu trên đều đúng 62. Trong đoạn mã sau kiểu dữ liệu của biến result có thể là những kiểu nào? 1 : byte b = 11; 2 : short s =13; 3 : result = b * ++s; a. byte, short, int, long, float, double b. boolean, byte, short, char, int, long, float, double c. byte, short, char, int, long, float, double d. int, long, float, double 63. Cho đoạn chương trình sau: 1 : class Cruncher{ 2 : void crunch(int i){ 3 : System.out.println(“int version”): 4 : } 5 : void crunch(String s){ 6 : System.out.println(“String version”); 7 : } 8 : 9 : public static void main(String[] args){ 10 : Cruncher crun = new Cruncher(); 11 : char ch = ‘p’; 12 : crun.crunch(ch); 13 : } 14 : } a. Dòng 5 sẽ không biên dịch vì phương thức trả về kiểu void không thể overridde 197 b. Dòng 12 sẽ không biên dịch vì không có phiên bản nào của phương thức crunch() nhận vào tham số kiểu char c. Đoạn mã biên dịch được nhưng sẽ phát sinh Exception ở dòng 12 d. Chương trình chạy và in ra kết quả: int version 64. Chọn phát biểu đúng a. Tham chiếu của đối tượng có thể được chuyển đổi trong phép gán nhưng không thể thực hiện trong phép gọi phương thức b. Tham chiếu của đổi tượng có thể được ép kiểu trong phép gọi phương thức nhưng không thể thực hiện trong phép gán c. Tham chiểu của đối tượng có thể được chuyển đổi trong phép gọi phương thức và phép gán nhưng tuân theo những quy tắc khác nhau d. Tham chiếu của đối tượng có thể được chuyển đổi trong phép gọi phương thức và phép gán và tuân theo những quy tắc giống nhau 65. Cho đoạn mã như bên dưới. Hãy cho biết dòng nào không thể biên dịch 1 : Object ob = new Object(); 2 : String stringarr[] = new String[50]; 3 : Float floater = new Float(3.14f); 4 : ob = stringarr; 5 : ob = stringarr[5]; 6 : floater = ob; 7 : ob = floater; a. Dòng 4 b. Dòng 5 a. Dòng 6 b. Dòng 7 198 Hình sau áp dụng cho các câu 66, 67, 68 66. Cho đoạn mã sau: 1 :Dog rover, fido; 2 :Animal anim; 3 : 4 :rover = new Dog(); 5 :anim = rover; 6 :fido = (Dog)anim; Hãy chọn phát biểu đúng a. Dòng 5 không thể biên dịch b. Dòng 6 không thể biên dịch c. Đoạn mã biên dịch thành công nhưng sẽ phát sinh Exception tại dòng 6 d. Đoạn mã biên dịch thành công và có thể thi hành 67. Cho đoạn mã sau: 1 :Cat sunflower; 2 :Washer wawa; 3 :SwampThing pogo; 4 : 5 :sunflower = new Cat(); Swamp Thing Mammal Animal Dog Cat (implements Washer) Racoon (implements Washer) 199 6 :wawa = sunflower; 7 :pogo = (SwampThing)wawa; Hãy chọn phát biểu đú a. Dòng 6 không thể biên dịch; cần có một phép ép kiểu để chuyển từ kiểu Cat sang kiểu Washer b. Dòng 7 không thể biên dịch vì không thể ép từ kiểu interface sang kiểu class c. Đoạn mã sẽ dịch và chạy nhưng phép ép kiểu ở dòng 7 là thừa và có thể bỏ di d. Đoạn mã biên dịch thành công nhưng sẽ phát sinh Exceptiono ở dòng 7 vì kiểu lớp của đối tượng trong biến wawa lúc thi hành không thể chuyển sang kiểu SwampThing 68. Cho đoạn mã sau 1 :Racoon rocky; 2 :SwampThing pogo; 3 :Washer w; 4 : 5 :rocky = new Racooon(); 6 :w = rocky; 7 :pogo = w; a. Dòng 6 sẽ không biên dịch; cần phải có phép ép kiểu để chuyển từ kiểu Racoon sang kiểu Washer b. Dòng 7 sẽ không biên dịch; cần có phép ép kiểu để chuyển từ kiểu Washer sang kiểu SwampThing c. Đoạn mã sẽ biên dịch nhưng sẽ phát sinh Exception ở dòng 7 vì chuyển đổi kiểu khi thực thi từ interface sang class là không được phép d. Đoạn mã sẽ biên dịch và sẽ phát sinh Exception ở dòng 7 vì kiểu lớp của w tại thời điểm thực thi không thể chuyển sang kiểu SwampThing 69. Cho đoạn mã sau: 1 : for (int i = 0; i < 2; i++){ 2 : for (int j = 0; j < 3; j++){ 200 3 : if (i == j){ 4 : continue; 5 : } 6 : System.out.println(“i = “ + i + “j = “ + j); 7 : } 8 : } Dòng nào sẽ là một trong số các kết quả được in ra? a. i = 0 j = 0 b. i = 2 j = 1 c. i = 0 j = 2 d. i = 1 j = 1 70. Cho đoạn mã sau: 1 : outer: for (int i = 0; i < 2; i++){ 2 : for (int j =0; j < 3; j++){ 3 : if (i == j){ 4 : continue outer; 5 : } 6 : System.out.println(“i = “ + i + “j = “ + j); 7 : } 8 : } Dòng nào sẽ là một trong số các kết quả được in ra? a. i = 0 j = 0 b. i = 0 j = 1 c. i = 0 j = 2 d. i = 1 j = 0 71. Chọn vòng lặp đúng a. 1 : while (int i < 7){ 2 : i++; 3 : System.out.println(“i is “ + i); 4 : } b. 201 5 : int i = 3; 6 : while (i){ 7 : System.out.println(“i is “ + i); 8 : } c. 1 : int j = 0; 2 : for(int k = 0; j + k != 10; j++, k++){ 3 : System.out.println(“j is “ + j + “ k is “ + k); 4 : } d. 1 : int j = 0; 2 : do{ 3 : System.out.println(“j is “ + j++); 4 : if (j == 3) { continue loop;} 5 : }while (j < 10); 72. Cho biết kết xuất của đoạn mã sau 1 : int x = 0, y = 4, z = 5; 2 : if ( x > 2){ 3 : if (y < 5){ 4 : System.out.println(“message one”); 5 : } 6 : else{ 7 : System.out.println(“message two”); 8 : } 9 : } 10 : else if (z > 5){ 11 : System.out.println(“message three”); 12 : } 13 : else{ 14 : System.out.println(“message four”); 15 : } a. message one b. message two c. message three 202 d. message four 73. Chọn phát biểu đúng cho đoạn mã sau: 1 : int j = 2; 2 : switch (j){ 3 : case 2: 4 : System.out.println(“value is two”); 5 : case 2 + 1: 6 : System.out.println(“value is three”); 7 : break; 8 : default: 9 : System.out.println(“value is” + j); 10 : break; 11 : } a. Đoạn mã không hợp lệ bỡi biểu thức ở dòng 5 b. Biến j trong cấu trúc switch() có thể là một trong các kiểu: byte, short, int hoặc long c. Kết xuất của chương trình chỉ là dòng: value is two d. Kết xuất của chương trình chỉ là dòng: value is two và value is three 74. Cho biết kết quả sau khi dịch và thực thi đoạn chương trình sau: 1. import java.awt.*; 2. 3. public class Test extends Frame { 4. Test() { 5. setSize(300,300); 6. Button b = new Button(“Apply”); 7. add(b); 8. } 9. 10. public static void main(String args[]) { 11. Test f = new Test(); 12. f.setVisible(true); 203 13. } 14. } a) Có lỗi biên dịch tại dòng 11 bởi vì constructor ở dòng 4 không khai báo public. b) Chương trình biên dịch thành công nhưng có sẽ ném ra exception khi thực thi câu lệnh ở dòng thứ 7. c) Chương trình hiển thị frame trống. d) Chương trình hiển thị 1 nút nhấn (Button) sử dụng font chữ mặc định cho nhãn của Button. Button chỉ đủ lớn để bao quanh nhãn của nó. e) Chương trình hiển thị nút nhấn (Button) dùng font chữ mặc định cho nhãn nút. Nút nhấn sẽ choán tất cả vùng hiển thị của frame. 75. Nếu 1 frame dùng bộ quản lý trình bày (layout manager) là GridLayout và không chứa bất kỳ panel hay container nào khác bên trong nó thì tất cả những components khi đưa vào trong frame này có cùng kích thước như nhau (ngang, dọc)? a) Đúng. b) Sai. 76. Nếu 1 frame dùng bộ quản lý trình bày (layout manager) mặc định và không chứa bất kỳ panel nào bên trong thì tất cả những components bên trong frame là cùng kích thước (ngang, dọc) ? a) Đúng. b) Sai. 77. Với bộ quản lý trình bày BorderLayout không nhất thiết các vùng phải có chứa các components. a) Đúng. b) Sai. 78. Bộ quản lý trình bày mặc định cho 1 khung chứa kiểu Panel là: 204 a) FlowLayout b) BorderLayout c) GridLayout d) GridBagLayout 79. Một Container có bộ quản lý trình bày là GridBagLayout thì mỗi component sẽ có kích thước bằng nhau khi thêm vào khung chứa (container) này? a) Đúng b) Sai 80. Bạn có thể tạo ra cửa sổ chính của ứng dụng bằng cách gọi: Frame f = new Frame(“Main Frame”); Nhưng khi bạn chạy chương trình thì Frame không hiển thị. Dòng nào bên dưới sẽ làm hiển thị Frame. a) f.setSize(300, 200); b) f.setBounds(10, 10, 500, 400); c) f.setForeground(Color.white); d) f.setVisible(true); 81. Đối tượng nào bên dưới có thể chứa 1 menubar (chọn những câu đúng) a) Panel b) ScrollPane c) Frame d) Menu 82. Sau khi tạo 1 frame bằng câu lệnh Frame f = new Frame() và tạo menu bar bằng câu lệnh MenuBar mb = new MenuBar(), làm thế nào để gắn MenuBar tên mb vào f. a) f.add(mb) b) f.setMenu(mb) c) f.addMenu(mb) d) f.setMenuBar(mb) 205 Phụ Lục B: Đáp án trắc nghiệm kiến thức 1.c; 2.b; 3.d; 4.c; 5.d; 6.d; 7.c; 8.a; 9.d; 10.a; 11.a; 12.c; 13.b; 14.d; 15.a; 16.d; 17.a; 18.c; 19.a; 20.c; 21.a; 22.a; 23.a; 24.a; 25.c; 26.a; 27.a; 28.d; 29.d; 30.c; 31.b; 32.a; 33.b; 34.d; 35.c; 36.c; 37.d; 38.d; 39.c; 40.c; 41.c; 42.c; 43.d; 44.a; 45.d; 46.d; 47.a; 48.b; 49.c; 50.b; 51.d; 52.b; 53.a; 54.d; 55.c; 56.d; 57.c; 58.a; 59.c; 60.d; 61.c; 62.d; 63.d; 64.d; 65.c; 66.d; 67.d; 68.b; 69.c; 70.d; 71.c; 72.d; 73.d; 74.e; 75.a; 76.b; 77.a; 78.a; 79.b; 80.d; 81.c; 82.d
File đính kèm:
- Giáo trình ngôn ngữ lập trình Java.pdf