Tài liệu về lập trình java

91 197 0
Tài liệu về lập trình java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỤC LỤC Chương 1: GIỚI THIỆU TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH JAVA .7 1.1 Mở đầu 1.2 Giới thiệu ngôn ngữ lập trình Java 1.2.1 Java gì? 1.2.2 Lịch sử phát triển ngôn ngữ lập trình Java 1.2.3 Một số đặc điểm bậc ngôn ngữ lập trình Java 1.3 Các ứng dụng Java 10 1.3.1 Java ứng dụng Console 10 1.3.2 Java ứng dụng Applet 11 1.3.3 Java phát triển ứng dụng Desktop dùng AWT JFC 12 1.3.4 Java phát triển ứng dụng Web 13 1.3.5 Java phát triển ứng dụng nhúng 14 1.4 Dịch thực thi chương trình viết Java 14 1.5 Chương trình Java 15 1.5.1 Tạo chương trình nguồn HelloWordApp 15 1.5.2 Biên dịch tập tin nguồn HelloWordApp 16 1.5.3 Chạy chương trình HelloWordApp 16 1.5.4 Cấu trúc chương trình HelloWordApp 17 Sử dụng phương thức/biến lớp 17 1.6 Công cụ lập trình chương trình dịch 17 1.6.1 J2SDK 17 1.6.2 Công cụ soạn thảo mã nguồn Java 18 Chương 2: 21 HẰNG, BIẾN, KIỂU DỮ LIỆU, 21 TOÁN TỬ, BIỂU THỨC VÀ CÁC 21 CẤU TRÚC ĐIỀU KHIỂN TRONG JAVA 21 2.1 Biến 21 2.2 Các kiểu liệu sở 23 2.2.1 Kiểu số nguyên 24 2.2.2 Kiểu dấu chấm động 26 2.2.3 Kiểu ký tự (char) 26 2.2.4 Kiểu luận lý (boolean) 27 2.3 Hằng: 27 2.4 Lệnh, khối lệnh java 28 2.5 Toán tử biểu thức 29 2.5.1 Toán tử số học 29 2.5.2 Toán tử bit 29 2.5.3 Toán tử quan hệ & logic 29 2.5.4 Toán tử ép kiểu 30 2.5.5 Toán tử đ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 switch… case 32 2.6.3 Cấu trúc lặp 32 2.6.4 Cấu trúc lệnh nhảy (jump) 33 2.7 Lớp bao kiểu liệu sở (Wrapper Class) 33 2.8 Kiểu liệu mảng 34 2.8.1 Khái niệm mảng 34 2.8.2 Khai báo mảng 34 Trang 2.8.3 Cấp phát nhớ cho mảng 35 2.8.4 Khởi tạo mảng 35 2.8.5 Truy cập mảng 35 2.9 Một số ví dụ minh họa: 36 Chương 3: HƯỚNG ĐỐI TƯỢNG TRONG JAVA 47 3.1 Mở đầu 47 3.2 Lớp (Class) 48 3.2.1 Khái niệm 48 3.2.2 Khai báo/định nghĩa lớp 48 3.2.3 Tạo đối tượng lớp 49 3.2.4 Thuộc tính lớp 49 3.2.5 Hàm - Phương thức lớp (Method) 50 3.2.6 Khởi tạo đối tượng (Constructor) 52 3.2.7 Biến this 53 3.2.8 Khai báo chồng phương thức (overloading method) 54 3.3 Đặc điểm hướng đối tượng java 54 3.3.1 Đóng gói (encapsulation) 55 3.3.2 Tính đa hình (polymorphism): 55 3.3.3 Tính kế thừa (inheritance) 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ụ minh họ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ệm 83 4.3.1 Component 83 4.3.2 Container 84 4.3.3 Layout Manager 85 4.4 Thiết kế GUI cho chương trình 86 4.4.1 Tạo khung chứa cửa sổ chương trình 86 4.4.2 Tạo hệ 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 Component khung chứa 90 4.4.5 Các đối tượng khung chứa Container 101 4.5 Xử lý biến cố/sự kiện 105 4.5.1 Mô hình xử lý kiện (Event-Handling Model) 105 4.5.2 Xử lý kiện chuột 108 4.5.3 Xử lý kiện bàn phím 111 4.6 Một số ví dụ minh họa 115 Chương 5: LUỒNG VÀ TẬP TIN 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 5.2.4 Những luồng định nghĩa trước (The Predefined Streams) 132 5.3 Sử dụng luồng Byte 133 5.3.1 Đọc liệu từ Console 134 5.3.2 Xuất liệu Console 135 5.3.3 Đọc ghi file dùng luồng Byte 136 Trang 5.3.4 Đọc ghi liệu nhị phân 141 5.4 File truy cậ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ẬP TRÌNH CƠ SỞ DỮ LIỆU 158 6.1 GIỚI THIỆU 158 6.2 KIẾN TRÚC JDBC 158 6.3 Các khái niệm 160 6.3.1 JDBC Driver 160 6.3.2 JDBC URL 162 6.4 KẾT NỐI CSDL VỚI JDBC 163 6.4.1 Đăng ký trình điều khiển 163 6.4.2 Thực kết nối 163 6.4.3 Ví dụ 164 6.5 KIỂU DỮ LIỆU SQL VÀ KIỂU DỮ LIỆU JAVA 168 6.6 CÁC THAO TÁC CƠ BẢN TRÊN CSDL 170 6.6.1 Các lớp 170 6.6.2 Ví dụ truy vấ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 LỜI NÓI ĐẦU Ngôn ngữ lập trình java đời nhà nghiên cứu Công ty Sun Microsystem giới thiệu vào năm 1995 Sau đời không lâu, ngôn ngữ lập trình sử dụng rộng rãi phổ biến lập trình viên chuyên nghiệp nhà phát triển phần mềm Gần ngôn ngữ lập trình, công nghệ java đưa vào giảng dạy sở đào tạo lập trình viên chuyên nghiệp Một số trường đại học Việt Nam dạy môn lập trình java chuyên đề tự chọn cho sinh viên công nghệ thông tin giai đoạn chuyên ngành Sau thời gian tìm hiểu, làm việc tham gia giảng dạy chuyên đề lập trình java cho lớp cử nhân tin học từ xa qua mạng Nhóm tác giả định biên soạn giáo trình nhằm phục vụ công tác giảng dạy học tập sinh viên chuyên ngành công nghệ thông tin Nội dung giáo trình tập trung vào kiến thức lập trình java giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ này, bước đệm để trở thành “java shooter” Một số vấn đề nâng ngôn ngữ lập trình java như: javabean, thiết kết giao diện dùng thư viện JFC(Java Foundation Class), lập trình mạng, lập trình sở liệu java, lập trình ứng dụng web dùng J2EE (Java Enterprise Edition), … nói đến chuyên đề nâng cao Chương giáo trình giới thiệu tổng quan lập trình sở liệu dùng jdbc, nội dung theo cần phải trình bày chuyên đề riêng Để đọc hiểu giáo trình người đọc cần nắm vững kiến thức về: nhập môn lập trình, lập trình hướng đối tượng Đây lần xuất chắn tránh khỏi sai sót Nhóm tác giả mong nhận ý kiến đóng góp quý thầy cô, đồng nghiệp bạn đọc để hoàn thiện giáo trình phục vụ cho việc học tập sinh viên Xin chân thành cảm ơn! TPHCM tháng 01/2006 Nhóm tác giả Trang Chương 1: GIỚI THIỆU TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH JAVA 1.1.Mở đầu Chương cung cấp cho sinh viên khái niệm, kiến thức liên quan đến việc lập trình ứng dụng ngôn ngữ Java như: lịch sử phát triển java, đặc điểm java, khái niệm máy ảo, cấu trúc chương trình đơn giản viết Java cách xây dựng, dịch thực thi chương trình Java 1.2.Giới thiệu ngôn ngữ lập trình Java 1.2.1 Java gì? Java ngôn ngữ lập trình hướng đối tượng (tựa C++) Sun Microsystem đưa vào thập niên 90 Chương trình viết ngôn ngữ lập trình java chạy hệ thống có cài máy ảo java (Java Virtual Machine) 1.2.2.Lịch sử phát triển ngôn ngữ lập trình Java Ngôn ngữ lập trình Java James Gosling công Công ty Sun Microsystem phát triển Đầu thập niên 90, Sun Microsystem tập hợp nhà nghiên cứu thành lập nên nhóm đặt tên Green Team Nhóm Green Team có trách nhiệm xây dựng công nghệ cho ngành điện tử tiêu dùng Để giải vấn đề nhóm nghiên cứu phát triển xây dựng ngôn ngữ lập trình đặt tên Oak tương tự C++ loại bỏ số tính nguy hiểm C++ có khả chạy nhiều phần cứng khác Cùng lúc world wide web bắt đầu phát triển Sun thấy tiềm ngôn ngữ Oak nên đầu tư cải tiến phát triển Sau không lâu ngôn ngữ với tên gọi Java đời giới thiệu năm 1995 Java tên gọi đảo Indonexia, Đây nơi nhóm nghiên cứu phát triển chọn để đặt tên cho ngôn ngữ lập trình Java chuyến tham quan làm việc đảo Hòn đảo Java nơi tiếng với nhiều khu vườn trồng cafe, lý thường thấy biểu tượng ly café nhiều sản phẩm phần mềm, công cụ lập trình Java Sun số hãng phần mềm khác đưa 1.2.3.Một số đặc điểm bậc ngôn ngữ lập trình Java Máy ảo Java (JVM - Java Virtual Machine) Tất chương trình muốn thực thi phải biên dịch mã máy Mã máy kiến trúc CPU máy tính khác (tập lệnh mã máy CPU Intel, CPU Solarix, CPU Macintosh … khác nhau), trước chương trình sau biên dịch xong chạy kiến trúc CPU cụ thể Đối với CPU Intel chạy hệ điều hành Microsoft Windows, Unix, Linux, OS/2, … Chương trình thực thi Windows biên dịch dạng file có đuôi EXE Linux biên dịch dạng file có đuôi ELF, trước chương trình chạy Windows muốn chạy hệ điều hành khác Linux chẳng hạn phải chỉnh sửa biên dịch lại Ngôn ngữ lập trình Java đời, nhờ vào máy ảo Java mà khó khăn nêu khắc phục Một chương trình viết ngôn ngữ lập trình Java biên dịch mã máy ảo java (mã java bytecode) Sau máy ảo Java chịu trách nhiệm chuyển mã java bytecode thành mã máy tương ứng Sun Microsystem chịu trách nhiệm phát triển máy ảo Java chạy hệ điều hành kiến trúc CPU khác Thông dịch: Java ngôn ngữ lập trình vừa biên dịch vừa thông dịch Chương trình nguồn viết ngôn ngữ lập trình Java có đuôi *.java biên dịch thành tập tin có đuôi *.class sau trình thông dịch thông dịch thành mã máy Độc lập nền: Một chương trình viết ngôn ngữ Java chạy nhiều máy tính có hệ điều hành khác (Windows, Unix, Linux, …) có cài đặt máy ảo java (Java Virtual Machine) Viết lần chạy nơi (write once run anywhere) Hướng đối tượng: Hướng đối tượng Java tương tự C++ Java ngôn ngữ lập trình hướng đối tượng hoàn toàn Tất thứ đề cập đến Java liên quan đến đối tượng định nghĩa trước, chí hàm chương trình viết Java (đó hàm main) phải đặt bên Trang lớp Hướng đối tượng Java tính đa kế thừa (multi inheritance) C++ mà thay vào Java đưa khái niệm interface để hỗ trợ tính đa kế thừa Vấn đề bàn chi tiết chương Đa nhiệm - đa luồng (MultiTasking - Multithreading): Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình chạy song song thời điểm tương tác với Khả chuyển (portable): Chương trình ứng dụng viết ngôn ngữ Java cần chạy máy ảo Java chạy máy tính, hệ điều hành có máy ảo Java “Viết lần, chạy nơi” (Write Once, Run Anywhere) Hỗ trợ mạnh cho việc phát triển ứng dụng: Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem” cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác cụ thể như: J2SE (Java Standard Edition) hỗ trợ phát triển ứng dụng đơn, ứng dụng client-server; J2EE (Java Enterprise Edition) hỗ trợ phát triển ứng dụng thương mại, J2ME (Java Micro Edition) hỗ trợ phát triển ứng dụng thiết bị di động, không dây, … 1.3.Các ứng dụng Java 1.3.1.Java ứng dụng Console Ứng dụng Console ứng dụng nhập xuất chế độ văn tương tự hình Console hệ điều hành MS-DOS Lọai chương trình ứng dụng thích hợp với bước đầu làm quen với ngôn ngữ lập trình java Các ứng dụng kiểu Console thường dùng để minh họa ví dụ liên quan đến cú pháp ngôn ngữ, thuật toán, chương trình ứng dụng không cần thiết đến giao diện người dùng đồ họa class HelloWorld { public static void main(String[] args) { System.out.println("\nHello World"); } } 1.3.2.Java ứng dụng Applet Java Applet loại ứng dụng nhúng chạy trang web trình duyệt web Từ internet đời, Java Applet cung cấp khả lập trình mạnh mẽ cho trang web Nhưng gần chương trình duyệt web phát triển với khả lập trình VB Script, Java Script, HTML, DHTML, XML, … với canh tranh khốc liệt Microsoft Sun làm cho Java Applet lu mờ Và gần lập trình viên không “mặn mà” với Java Applet (trình duyệt IE kèm phiên Windows 2000 không hỗ trợ thực thi ứng dụng Java Applet) Hình bên minh họa chương trình java applet thực thi trang web 1.3.3.Java phát triển ứng dụng Desktop dùng AWT JFC Việc phát triển chương trình ứng dụng có giao diện người dùng đồ họa trực quan giống chương trình viết dùng ngôn ngữ lập trình VC++ hay Visual Basic java giải thư viện AWT JFC JFC thư viện phong phú hỗ trợ mạnh mẽ nhiều so với AWT JFC giúp cho người lập trình tạo giao diện trực quan ứng dụng Liên quan đến việc phát triển ứng dụng có giao diện người dùng đồ họa trực quan tìm hiểu chi tiết chương Minh họa thiết kế giao diện người dùng sử dụng JFC 1.3.4.Java phát triển ứng dụng Web Java hỗ trợ mạnh mẽ việc phát triển ứng dụng Web thông qua công nghệ J2EE (Java Enterprise Edition) Công nghệ J2EE hoàn toàn tạo ứng dụng Web cách hiệu không thua công nghệ NET mà Microsft quảng cáo Hiện có nhiều trang Web tiếng Việt Nam khắp nơi giới xây dựng phát triển dựa công nghệ Java Số ứng dụng Web xây dựng dùng công nghệ Java chắn số xác bao nhiêu, đưa vài ví dụ để thấy công nghệ Java Sun “đối thủ đáng gờm” Microsoft http://java.sun.com/ Trang http://e-docs.bea.com/ http://www.macromedia.com/software/jrun/ http://tomcat.apache.org/index.html Chắc không người biết đến trang web thông tin nhà đất tiếng TPHCM là: http://www.nhadat.com/ Ứng dụng Web xây dựng dựa công nghệ java Bạn tìm hiểu chi tiết công nghệ J2EE tạo địa chỉ: http://java.sun.com/j2ee/ 1.3.5.Java phát triển ứng dụng nhúng Java Sun đưa công nghệ J2ME (The Java Platform, Micro Edition J2ME) hỗ trợ phát triển chương trình, phần mềm nhúng J2ME cung cấp môi trường cho chương trình ứng dụng chạy thiết bị cá nhân như: điện thọai di động, máy tính bỏ túi PDA hay Palm, thiết bị nhúng khác Bạn tìm hiểu chi tiết công nghệ J2ME địa chỉ: http://java.sun.com/j2me/ 1.4.Dịch thực thi chương trình viết Java Việc xây dựng, dịch thực thi chương trình viết ngôn ngữ lập trình java tóm tắt qua bước sau: - Viết mã nguồn: dùng chương trình soạn thảo (NotePad hay Jcreator chẳng hạn) để viết mã nguồn lưu lại với tên có đuôi “.java” - Biên dịch mã máy ảo: dùng trình biên dịch javac để biên dịch mã nguồn “.java” thành mã máy ảo (java bytecode) có đuôi “.class” lưu lên đĩa - Thông dịch thực thi: ứng dụng load vào nhớ, thông dịch thực thi dùng trình thông dịch Java thông qua lệnh “java” + Đưa mã java bytecode vào nhớ: bước “loading” Chương trình phải đặt vào nhớ trước thực thi “Loader” lấy files chứa mã java bytecode có đuôi “.class” nạp chúng vào nhớ + Kiểm tra mã java bytecode: trước trình thông dịch chuyển mã bytecode thành mã máy tương ứng để thực thi mã bytecode phải kiểm tra tính hợp lệ + Thông dịch & thực thi: cuối điều khiển CPU trình thông dịch thời điểm có mã bytecode chuyển sang mã máy thực thi 1.5.Chương trình Java 1.5.1.Tạo chương trình nguồn HelloWordApp •Khởi động Notepad gõ đoạn mã sau /*Viết chương trình in dòng HelloWorld lên hình Console*/ class HelloWorldApp{ public static void main(String[] args){ //In dong chu “HelloWorld” System.out.println(“HelloWorld”); } } Lưu lại với tên HelloWorldApp.java 1.5.2.Biên dịch tập tin nguồn HelloWordApp Việc biên dịch tập tin mã nguồn chương trình HelloWorldApp thực qua bước cụ thể sau: - Mở cửa sổ Command Prompt - Chuyển đến thư mục chứa tập tin nguồn vừa tạo - Thực câu lệnh: javac HelloWordApp.java Nếu gặp thông báo lỗi “Bad Command of filename” “The name specified is not recognized as an internal or external command, operable program or batch file” có nghĩa Windows không tìm trình biên dịch javac Để sửa lỗi cần cập nhật lại đường dẫn PATH hệ thống Ngược lại thành công bạn có thêm tập tin HelloWordApp.class 1.5.3.Chạy chương trình HelloWordApp - Tại nhắc gõ lệnh: java HelloWordApp - Nếu chương trình bạn thấy dòng chữ HelloWord hình Console - Nếu bạn nhận lỗi “Exception in thread "main java.lang.NoClassDefFoundError: HelloWorldApp” có nghĩa Java tìm tập tin mã bytecode tên HelloWorldApp.class Trang bạn Một nơi java cố tìm tập tin bytecode thư mục bạn Vì thể tập tin byte code đặt C:\java bạn nên thay đổi đường dẫn tới 1.5.4.Cấu trúc chương trình HelloWordApp Phương thức main(): điểm bắt đầu thực thi ứng dụng Mỗi ứng dụng Java phải chứa phương thức main có dạng sau: public static void main(String[] args) Phương thức main chứa ba bổ từ đặc tả sau: •public phương thức main gọi bỡi đối tượng •static rắng phương thức main phương thức lớp •void phương thức main không trả giá trị Ngôn ngữ Java hỗ trợ ba kiểu thích sau: •/* text */ •// text •/** documentation */ Công cụ javadoc JDK sử dụng thích để chuẩn bị cho việc tự động phát sinh tài liệu - Dấu mở đóng ngo8ạc nhọn “{“ “}”: bắt đầu kết thúc khối lệnh - Dấu chấm phẩy “;” kết thúc dòng lệnh 1.5.5.Sử dụng phương thức/biến lớp Cú pháp: Tên_lớp.Tên_biến Tên_lớp.Tên_phương_thức(…) 1.6.Công cụ lập trình chương trình dịch 1.6.1.J2SDK - Download J2SE phiên tương ứng với hệ điều hành sử dụng từ địa java.sun.com cài đặt lên máy tính (phiên sử dụng viết giáo trình J2SE 1.4) Sau cài xong, cần cập nhật đường dẫn PATH hệ thống đến thư mục chứa chương trình dịch ngôn ngữ java 1.6.2.Công cụ soạn thảo mã nguồn Java Để viết mã nguồn java sử dụng trình soạn thảo NotePad số môi trường phát triển hỗ trợ ngônngữ java như: Jbuilder hãng Borland, Visual Café hãng Symantec, JDeveloper hãng Oracle, Visual J++ Microsoft, … Trong khuôn khổ giáo trình để hướng dẫn sinh viên thực hành dùng công cụ JCreator LE v3.50 hãng XINOX Software Các bạn download JCreator LE v3.50 từ http://www.jcreator.com/download.htm Ví dụ: Dùng JCreator tạo thực thi chương trình có tên HelloWorldApp Bước 1: Tạo Empty Project - File → New → Project - Chọn Empty project bấm nút chọn Next - Sau nhập tên project bấm chọn Finish Bước 2: Tạo Class tên HelloWorldApp đưa vào Project - File → New → Class - Nhập vào tên Class chọn Finish (hình bên dưới) Bước 3: Soạn thảo mã nguồn (hình bên dưới) Cửa sổ WorkSpace Cửa sổ soạn thảo mã nguồn Thực thi (F5) Dịch (F7) Trang Chương 2: HẰNG, BIẾN, KIỂU DỮ LIỆU, TOÁN TỬ, BIỂU THỨC VÀ CÁC CẤU TRÚC ĐIỀU KHIỂN TRONG JAVA 2.1.Biến - Biến vùng nhớ dùng để lưu trữ giá trị chương trình Mỗi biến gắn liền với kiểu liệu định danh gọi tên biến - Tên biến thông thường chuỗi ký tự(Unicode), ký số o Tên biến phải bắt đầu chữ cái, dấugạch hay dấu dollar o Tên biến không trùng với từ khóa (xem phụ lục từ khóa java) o Tên biến khoảng trắng tên - Trong java, biến khai báo nơi đâu chương trình Cách khai báo ; = ; Gán giá trị cho biến = ; Biến công cộng (toàn cục): biến truy xuất khắp nơi chương trình, thường khai báo dùng từ khóa public, đặt chúng class Biến cục bộ: biến truy xuất khối lệnh khai báo Lưu ý: Trong ngôn ngữ lập trình java có phân biệt chữ in hoa in thường Vì cần lưu ý đặt tên cho đối tương liệu xử lý chương trình Ví dụ: import java.lang.*; import java.io.*; class VariableDemo { static int x, y; public static void main(String[] args) { x = 10; y = 20; int z = x+y; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = x + y =" + z); System.out.println("So nho hon la so:" + Math.min(x, y)); char c = 80; System.out.println("ky tu c la: " + c); } } Kết chương trình 2.2.Các kiểu liệu sở Ngôn ngữ lập trình java có kiểu liệu sở: byte, short, int, long, float, double, boolean char Kiểu Kích thước (bytes) Giá trị Giá trị max Giá trị mặc định byte -256 255 short -32768 32767 int -231 231 - long -263 263 - 0L float 0.0f Trang double 0.0d 2.2.1.Kiểu số nguyên - Java cung cấp kiểu số nguyên khác là: byte, short, int, long Kích thước, giá trị nhỏ nhất, lớn nhất, giá trị mặc định kiểu liệu số nguyên mô tả chi tiết bảng - Kiểu mặc định số nguyên kiểu int - Các số nguyên kiểu byte short dùng - Trong java kiểu số nguyên không dấu ngôn ngữ C/C++ Kiểu sở Kiểu luận lý boolean Kiểu số kiểu nguyên kiểu thực Kiểu ký tự char byte short int long float double Khai báo khởi tạo giá trị cho biến kiểu nguyên: int x = 0; long y = 100; Một số lưu ý phép toán số nguyên: - Nếu hai toán hạng kiểu long kết kiểu long Một hai toán hạng kiểu long chuyển thành kiểu long trước thực phép toán - Nếu hai toán hạng đầu kiểu long phép tính thực với kiểu int - Các toán hạng kiểu byte hay short chuyển sang kiểu int trước thực phép toán - Trong java chuyển biến kiểu int kiểu boolean ngôn ngữ C/C++ Ví dụ: có đoạn chương trình sau boolean b = false; if (b == 0) { System.out.println("Xin chao"); } Lúc biên dịch đoạn chương trình trình dịch báo lỗi: không phép so sánh biến kiểu boolean với giá trị kiểu int 2.2.2.Kiểu dấu chấm động Đối với kiểu dấu chấm động hay kiểu thực, java hỗ trợ hai kiểu liệu float double Kiểu float có kích thước byte giá trị mặc định 0.0f Kiểu double có kích thước byte giá trị mặc định 0.0d Số kiểu dấu chấm động giá trị nhỏ giá trị lớn Chúng nhận giá trị: - Sốâm - Số dương - Vô cực âm - Vô cực dương Khai báo khởi tạo giá trị cho biến kiểu dấu chấm động: float x = 100.0/7; double y = 1.56E6; Một số lưu ý phép toán số dấu chấm động: - Nếu toán hạng có kiểu dấn chấm động phép toán chuyển thành phép toán dấu chấm động - Nếu có toán hạng double toán hạng lại chuyển thành kiểu double trước thực phép toán - Biến kiểu float double ép chuyển sang kiểu liệu khác trừ kiểu boolean 2.2.3.Kiểu ký tự (char) Kiểu ký tự ngôn ngữ lập trình java có kích thước bytes dùng để biểu diễn ký tự mã Unicode Như kiểu char java biểu diễn tất 216 = 65536 ký tự khác Giá trị mặc định cho biến kiểu char null http://www.ebook.edu.vn 27 2.2.4.Kiểu luận lý (boolean) - Kiểu boolean nhận giá trị: true false Trang - Trong java kiểu boolean chuyển thành kiểu nguyên ngược lại - Giá trị mặc định kiểu boolean false 2.3.Hằng: - Hằng giá trị bất biến chương trình - Tên đặt theo qui ước giống tên biến - Hằng số nguyên: trường hợp giá trị dạng long ta thêm vào cuối chuỗi số chữ “l” hay “L” (ví dụ: 1L) - Hằng số thực: truờng hợp giá trị có kiểu float ta thêm tiếp vĩ ngữ “f” hay “F”, kiểu số double ta thêm tiếp vĩ ngữ “d” hay “D” - Hằng Boolean: java có boolean true, false - Hằng ký tự: ký tự đơn nằm nằm dấu ngoặc đơn o Ví dụ: ‘a’: ký tự a o Một số ký tự đặc biệt Ký tự Ý nghĩa \b Xóa lùi (BackSpace) \t Tab \n Xuống hàng \r Dấu enter \” Nháy kép \’ Nháy đơn \\ Số ngược \f Đẩy trang \uxxxx Ký tự unicode - Hằng chuỗi: tập hợp ký tự đặt hai dấu nháy kép “” Một chuỗi ký tự chuỗi rỗng o Ví dụ: “Hello Wolrd” o Lưu ý: Hằng chuỗi kiểu liệu sở khai báo sử dụng chương trình 2.4.Lệnh, khối lệnh java Giống ngôn ngữ C, câu lệnh java kết thúc dấu chấm phẩy (;) Một khối lệnh đoạn chương trình gồm hai lệnh trở lên bắt đầu dấu mở ngoặc nhọn ({) kết thúc dấu đóng ngoặc nhọn (}) Bên khối lệnh chứa hay nhiều lệnh chứa khối lệnh khác.{ // khối { // khối lệnh 2.1 lệnh 2.2 … } // kết thúc khối lệnh lệnh 1.1 lệnh 1.2 … } // kết thúc khối lệnh { // bắt đầu khối lệnh // Các lệnh thuộc khối lệnh //… } // kết thúc thối lệnh 2.5.Toán tử biểu thức 2.5.1.Toán tử số học Toán tử Ý nghĩa + Cộng - Trừ * Nhân / Chia nguyên Trang 10 System.out.println(“Establishing a connection ”); Connection connection = DriverManager.getConnection(url); System.out.println(“Connect to “ + connection.getCatalog() + “ a success!”); MovieDatabase db = new MovieDatabase(connection); Movie [] movies = new Movie[6]; movies[0] = new Movie(1, “Star Wars: A New Hope”, “Science Fiction”, “DVD”); movies[1] = new Movie(2, “Citizen Kane”, “Drama”, “VHS”); movies[2] = new Movie(3, “The Jungle Book”, “Children”, “VHS”); movies[3] = new Movie(4, “Dumb and Dumber”, “Comedy”, “DVD”); movies[4] = new Movie(5, “Star Wars: Attack of the Clones”, “Science Fiction”, “DVD”); movies[5] = new Movie(6, “Toy Story”, “Children”, “DVD”); for(int i = 0; i < movies.length; i++){ db.addMovie(movies[i]); } System.out.println(“Closing the connection ”); connection.close(); } catch(Exception e){ e.printStackTrace(); } } } Tài liệu tham khảo: [1] java.sun.com [2] Herbert Schildt Java A Beginner’s Guide Second Edition McGraw-Hill - 2003 [3] Dr Harvey M Deitel - Paul J Deitel Java How to Program, 4th Ed (Deitel) Prentice Hall - 2002 [4] Simon Roberts – Philip Heller – Michael Ernest Complete Java Certification – study guide BPB Publications – 2000 [5] Cay S Horstmann – Gary Cornell Core Java Volum Fundamentals The Sun Microsystems press 1997 [6] Cay S Horstmann – Gary Cornell Core Java Volum – Advanced Features The Sun Microsystems press 1997 Phụ lục A: Trắc nghiệm kiến thức Chọn phát biểu a InputStream OuputStream luồng liệu kiểu byte b Reader Writer luồng liệu kiểu character c Câu a) b) d Tất câu sai Cho biết số byte mà đoạn chương trình sau ghi tập tin temp.txt a bytes b bytes Trang 77 c bytes d 16 bytes Chọn phát biểu a Một thể lớp File dùng để truy cập tập tin thư mục hành b Khi thể lớp File tạo tập tin tương ứng tạo đĩa c Các thể lớp File dùng để truy cập đến tập tin thư mục đĩa d Câu a) c) Cho biết cách tạo thể InputStreamReader từ thể InputStream a Sử dụng phương thức createReader() lớp InputStream b Sử dụng phương thức createReader() lớp InputStreamReader c Tạo thể InputStream truyền vào cho hàm khởi tạo InputStreamReader d Tất câu sai Chọn phát biểu a Lớp Writer dùng để ghi ký tự có cách mã hóa khác luồng xuất b Lớp Writer dùng để ghi ký tự Unicode luồng xuất c Lớp Writer dùng để ghi giá trị kiểu liệu sở luồng xuất d Câu a) b) Chọn phát biểu đúng: a Các event listeners interface qui định phương thức cần phải cài đặt để xử lý kiên liên quan kiện xảy b Một event adapter cung cấp cài đặt mặc định cho event listener tương ứng c Lớp WindowAdapter dùng để xử lý kiện liên quan đến cửa sổ hình d Tất câu Khi có nhiều component gắn lắng nghe loại kiện component nhận kiện đầu tiên? a Component gắn lắng nghe kiện b Component cuối gắn lắng nghe kiện c Không thể xác định component nhận trước d Không thể có nhiều lắng nghe cho loại kiện Chọn component có phát sinh action event a Button b Label c Checkbox d Windows Chọn phát biểu a Thể TextField phát sinh ActionEvent b Thể TextArea phát sinh ActionEvent c Thể button phát sinh ActionEvent d Câu a) c) 10 Chọn phát biểu a MouseListener interface định nghĩa phương thức để xử lý kiện nhấn chuột b MouseMotionListener interface định nghĩa phương thức để xử lý kiện nhấn chuột c MouseClickListener interface định nghĩa phương thức để xử lý kiện nhấn chuột d Tất câu 11 Giả sữ e lắng nghe kiện TextEvent thể t lớp TextArea Cho biết cách để gắn lắng nghe e vào t? a t.addTextListener(e) b e.addTextListener(t) c addTextListener(e,t) d addTextListener(t,e) 12 Màn hình sau sử dụng kiểu trình bày nào? a CardLayout b nullLayout Trang 78 c BorderLayout d SetLayout 13 Màn hình sau sử dụng kiểu trình bày nào? a GridLayout b FlowLayout c BorderLayout d GridBagLayout 14 Cho component comp container cont có kiểu trình bày BorderLayout Cho biết cách để gắn comp vào vị trí đầu cont a addTop(cont,comp) b comp.add(“North”, cont) c cont.addTop(comp) d cont.add(comp,BorderLayout.NORTH) 15 Cho component comp container cont có kiểu trình bày FlowLayout Cho biết cách để gắn comp vào cont a cont.add(comp) b comp.add(cont) c cont.addComponent(comp) d cont.addAllComponents() 16 Chọn phương thức dùng để xác định cách trình bày khung chứa a startLayout() b initLayout() c layoutContainer() d setLayout() 17 Chọn phương thức dùng để xác định vị trí kích thước component a setBounds() b setSizeAndPosition() c setComponentSize() d setComponent() 18 Chọn kiểu trình bày để đặt component khung chứa dạng bảng a CardLayout b BorderLayout c GridLayout d FlowLayout 19 Chọn phương thức dùng để gán nội dung cho Label a setText() b setLabel() c setTextLabel() d setLabelText() 20 Chọn phát biểu a TextComponent extends TextArea b TextArea extends TextField c TextField extends TextComponent d TextComponent extends TextField 21 Chọn phát biểu a Lớp CheckboxGroup dùng để định nghĩa cá RadioButtons b Lớp RadioGroup dùng để định nghĩa cá RadioButtons c Tất câu d Tất câu sai 22 Chọn câu lệnh để tạo TextArea có 10 dòng 20 cột a new TexArea(10,20) b new TexArea(20,10) c new TexArea(200) Trang 79 d Tất câu sai 23 Chọn câu lệnh để tạo danh sách gồm mục chọn cho phép thực chọn nhiều mục lúc a new List(5, true) b new List(true, 5) c new List(5, false) d new List(false, 5) 24 Chọn phương thức để thị Frame lên hình a setVisible() b display() c displayFrame() d Tất câu sai 25 Chọn phát biểu a Lớp Class lớp cha lớp Object b Lớp Object lớp final c Mọi lớp đề kế thừa trực tiếp gián tiếp từ lớp Object d Tất câu sai 26 Lớp sau dùng để thực thao tác nhập xuất với console a System b Math c String d StringBuffer 27 Lớp sau lớp bao? a String b Integer c Boolean d Character 28 Đoạn mã sau sai chổ nào? a Đoạn mã lỗi b Điều kiện câu lệnh if phải có kiểu boolean thay Boolean c Chỉ số câu lệnh for int thay Integer d Câu b) c) đú 29 Phương thức sau làm cho giá trị biến s bị thay đổi a s.concat() b s.toUpperCase() c s.replace() d Câu a) b) 30 Hãy cho biết kết xuất đoạn chương trình sau: a S1 b S2 c S1S2 d S2S1 31 Chọn phát biểu cho hàm khởi tạo a Một lớp kết thừa hàm khởi tạo từ lớp cha b Trình biên dịch tự động tạo hàm khởi tạo mặc định lớp không định nghĩa hàm khởi tạo c Tất hàm khởi tạo có kiểu trả void d Tất câu sai 32 Cho biết kết xuất đoạn chương trình sau: a S1 b S2 c null d S1S2 33 Một kiểu liệu số có dấu có giá trị +0 -0 nhau: Trang 80 a Đúng b Sai c Chỉ với kiểu số nguyên d Chỉ với kiểu số thực 34 Chọn khai báo tên a Big01LongStringWidthMeaninglessName b $int c bytes d Tất câu 35 Chọn khai báo cho phương thức main() a public static void main( ) b public void main(String[] arg) c public static void main(String[] args) d public static int main(String[] arg) 36 Chọn thứ tự thành phần tập tin nguồn a Câu lệnh import, khai báo package, khai báo lớp b Khai báo package đầu tiên; thứ tự câu lệnh import khai báo lớp tùy ý c Khai báo package, câu lệnh import, khai báo lớp d Câu lệnh import trước tiên; thứ tự khai báo package khai báo lớp tùy ý 37 Cho câu lệnh sau: int[] x = new int[25]; Chọn kết sau thi hành câu lệnh a x[24] chưa định nghĩa b x[25] có giá trị c x[0] = có giá trị null d x.length = 25 38 Cho đoạn mã sau: : class Q6{ : public static void main(String args[]){ : Holder h = new Holder(); : h.held = 100; : h.bump(h); : System.out.println(h.held); 7:} 8:} : class Holder{ 10 : public int held; 11 : public void bump(Holder theHolder){ 12 : theHolder.held++; 13 : } 14 : } Giá trị in câu lệnh dòng thứ là: a b c 100 d 101 39 Cho đoạn mã sau: : class Q7{ : public static void main(String args[]){ : double d = 12.3; : Decrementer dec = new Decrementer(); : dec.decrement(d); : System.out.println(d); Trang 81 7:} 8:} : class Decrementer{ 10 : public void decrement(double decMe){ 11 : decMe = decMe – 1.0; 12 : } 13 : } Giá trị in câu lệnh dòng thứ là: a 0.0 b -1.0 c 12.3 d 11.3 40 Miền giá trị biến kiểu short là: a Nó phụ thuộc vào phần cứng bên b Từ0 đến 216 – c Từ-215 đến 215 – d Từ-231 đến 231 – 41 Miền giá trị biến kiểu byte là: a Nó phụ thuộc vào phần cứng bên b Từ0 đến 28 – c Từ-27 đến 27 – d Từ-215 đến 215 – 42 Cho biết giá trị x, a b sau thi hành đoạn mã sau: : int x, a = 6, b = 7; : x = a++ + b++; a x = 15, a = 7, b = b x = 15, a = 6, b = c x = 13, a = 7, b = d x = 13, a = 6, b = 43 Biểu thức sau hợp lệ a int x = 6;x = !x; b itn x = 6; if (!(x > 3)) {} c int x = 6; x = ~x; d Câu b) c) 44 Biểu thức sau cho x có giá trị dương: a int x = -1; x = x >>> 5; b int x = -1; x = x >>> 32; c byte x = -1; x = x >>> 5; d int x = -1; x = x >> 5; 45 Biểu thức sau hợp lệ a String x = “Hello”; int y = 9; x +=y; b String x = “Hello”; int y = 9; x = x + y; c String x = null; int y = (x != null) && (x.length() > 0) ? x.length() : 0; d Tất câu 46 Đoạn mã sau in hình chữ “Equal”: a int x = 100; float y = 100.0F; if (x == y) { System.out.println(“Equal”); } b Trang 82 Integer x = new Integer(100); Integer y = new Integer(100); if (x == y) { System.out.println(“Equal”); } c String x = “100”; String y = “100”; if (x == y) { System.out.println(“Equal”); } d Câu a c 47 Cho biết kết sau thi hành chương trình sau: : public class Short{ : public static void main(String[] args){ : StringBuffer s = new StringBuffer(“Hello”); : if ((s.length() > 5) && : s.append(“ there”).equals(“False”))) : ;//do nothing : System.out.println(“value is ” + s); 8:} 9:} a Giá trị xuất Hello b Lỗi biên dịch dòng c Không có giá trị xuất d Thông báo NullPointerException 48 Cho biết kết sau thực chương trình sau: : public class Xor{ : public static void main(String[] args){ : byte b = 10;//00001010 : byte c = 15;//00001111 : b = (byte)(b ^ c); : System.out.println(“b contains ” + b); 7:} 8:} a Kết là: b contains 10 b Kết là: b contains c Kết là: b contains 250 d Kết là: b contains 245 49 Cho biết kết sau biên dịch thi hành chương trình sau: : public class Conditional{ : public static void mai n(String[] args){ : int x = 4; : System.out.println(“value is ” + : ((x > ? 99.99 : 9)); 6:} 7:} a Kết là: value is 99.99 b Kết là: value is c Kết là: value is 9.0 d Lỗi biên dịch dòng số 50 Cho biết kết đoạn mã sau: Trang 83 : int x = 3; int y = 10; : System.out.println(y % x); a b c d 51 Chọn câu khai báo không hợp lệ a String s; b abstract double d; c abstract final double hyperbolCosine(); d Tất câu 52 Chọn câu phát biểu a Một lớp trừu tượng chứa phương thức final b Một lớp final chứa phương thức trừu tượng c Cả a) b) d Cả a) b) sai 53 Chọn cách sửa để đoạn mã sau biên dịch : final class Aaa 4:{ : int xxx; : void yyy(){xxx = 1;} 7:} 8: 9: 10 : class Bbb extends Aaa 11 : { 12 : final Aaa finalRef = new Aaa(); 13 : 14 : final void yyy() 15 : { 16 : System.out.println(“In method yyy()”); 17 : finalRef.xxx = 12345; 18 : } 19 : } a Xóa từ final dòng b Xoá từ final dòng 10 c Xóa từ final dòng 10 d Không cần phải chỉnh sửa 54 Chọn phát biểu cho chương trình sau : class StaticStuff 2:{ : static int x = 10; 4: : static {x += 5;} 6: : public static void main(String args[]) 8:{ : System.out.pritln(“x = ” + x); 10 : } 11 : 12 : static {x /= 5} 13 : } a Lỗi biên dịch dòng 12 bỡi thiếu tên phương thức kiểu trả Trang 84 b Chương trình chạy cho kết x = 10 c Chương trình chạy cho kết x = 15 d Chương trình chạy cho kết x = 55 Chọn phát biểu cho chương trình sau: : class HasStatic 2:{ : private static int x = 100; 4: : public static void main(String args[]) 6:{ : HasStatic hs1 = new HasStatic(); : hs1.x++; : HasStatic hs2 = new HasStatic(); 10 : hs2.x++; 11 : hs1 = new HasStatic(); 12 : hs1.x++; 13 : HasStatic.x++; 14 : System.out.println(“x = “ + x); 15 : } 16 : } a Chương trình chạy cho kết x = 102 b Chương trình chạy cho kết x = 103 c Chương trình chạy cho kết x = 104 d Tất câu sai 56 Cho đoạn mã sau: : class SuperDuper 2:{ : void aMethod(){} 4:} 5: : class Sub extends SuperDuper 7:{ : void aMethod(){} 9:} Hãy chọn từ khóa phạm vi hợp lệ đứng trước aMethod() dòng a default b protected c public d Tất câu Đoạn mã sau dùng cho câu hỏi : package abcde; 2: : public class Bird{ : protected static int referneceCount = 0; : public Bird(){referenceCount++;} : protected void fly(){…} : static int getRefCount(){return referenceCount;} 8:} 57 Chọn phát biểu cho lớp Bird lớp Parrot sau: : package abcde; 2: : class Parrot extends abcde.Bird{ : public void fly(){ Trang 85 : // 6:} : public int getRefCount(){ : return referenceCount; 9:} 10 : } a Lỗi biên dịch dòng tập tin Parrot.java phương thức fly() protected lớp cha lớp Bird Parrot nằm package b Lỗi biên dịch dòng tập tin Parrot.java phương thức fly() protected lớp cha public lớp c Lỗi biên dịch dòng tập tin Parrot.java phương thức getRefCount() static lớp cha d Chương trình biên dịch thành công phát sinh Exception chạy phương thức fly() lớp Parrot không gọi 58 Chọn phát biểu cho lớp Bird lớp Nightingale sau: : package singers; 2: : class Nightingale extends abcde.Bird{ : Nightingale(){ refernceCount++;} 5: : public static void main(String args[]){ : System.out.print(“Before: “ + refernceCount); : Nightingale florence = new Nightingale(); : System.out.print(“After: “ + refernceCount); 10 : florence.fly(); 11 : } 12 : } a Kết hình là: Before: After: b Kết hình là: Before: After: c Lỗi biên dịch dòng lớp Nightingale overidde thành viên static d Lỗi biên dịch dòng 10 lớp Nightingale phương thức fly() protected lớp cha 59 Chọn phát biểu a Chỉ kiểu liệu sở chuyển đổi kiểu tự động; để chuyển đổi kiểu liệu biến tham chiểu phải sử dụng phép ép kiểu b Chỉ biến tham chiếu chuyển đổi kiểu tự động; để chuyển kiểu biến kiểu sở phả i sử dụng phép toán ép kiểu c Cả kiểu liệu sở kiểu tham chiếu chuyển đổi tự động ép kiểu d Phép ép kiểu liệu số cần phép kiểm tra thực thi 60 Dòng lệnh sau biên dịch: : byte b = 5; : char c = ‘5’; : short s = 55; : int i = 555; : float f = 555.5f; : b = s; : i = c; : if (f > b) : f = i; a Dòng b Dòng c Dòng d Dòng 61 Chọn dòng phát sinh lỗi biên dịch : byte b = 2; Trang 86 : byte b1 = 3; : b = b * b1; a Dòng b Dòng c Dòng d Tất câu 62 Trong đoạn mã sau kiểu liệu biến result kiểu nào? : byte b = 11; : short s =13; : 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: : class Cruncher{ : void crunch(int i){ : System.out.println(“int version”): 4:} : void crunch(String s){ : System.out.println(“String version”); 7:} 8: : public static void main(String[] args){ 10 : Cruncher crun = new Cruncher(); 11 : char ch = ‘p’; 12 : crun.crunch(ch); 13 : } 14 : } a Dòng không biên dịch phương thức trả kiểu void overridde b Dòng 12 không biên dịch phiên phương thức crunch() nhận vào tham số kiểu char c Đoạn mã biên dịch phát sinh Exception dòng 12 d Chương trình chạy in kết quả: int version 64 Chọn phát biểu a Tham chiếu đối tượng chuyển đổi phép gán thực phép gọi phương thức b Tham chiếu đổi tượng ép kiểu phép gọi phương thức thực phép gán c Tham chiểu đối tượng chuyển đổi phép gọi phương thức phép gán tuân theo quy tắc khác d Tham chiếu đối tượng chuyển đổi phép gọi phương thức phép gán tuân theo quy tắc giống 65 Cho đoạn mã bên Hãy cho biết dòng biên dịch : Object ob = new Object(); : String stringarr[] = new String[50]; : Float floater = new Float(3.14f); : ob = stringarr; : ob = stringarr[5]; : floater = ob; : ob = floater; a Dòng b Dòng Trang 87 a Dòng b Dòng Hình sau áp dụng cho câu 66, 67, 68 66 Cho đoạn mã sau: :Dog rover, fido; :Animal anim; 3: :rover = new Dog(); :anim = rover; :fido = (Dog)anim; Hãy chọn phát biểu a Dòng biên dịch b Dòng biên dịch c Đoạn mã biên dịch thành công phát sinh Exception dòng d Đoạn mã biên dịch thành công thi hành 67 Cho đoạn mã sau: :Cat sunflower; :Washer wawa; :SwampThing pogo; 4: :sunflower = new Cat(); Swamp Thing Mammal Animal Dog Cat (implements Washer) Racoon (implements Washer) :wawa = sunflower; :pogo = (SwampThing)wawa; Hãy chọn phát biểu đú a Dòng biên dịch; cần có phép ép kiểu để chuyển từ kiểu Cat sang kiểu Washer b Dòng biên dịch ép từ kiểu interface sang kiểu class c Đoạn mã dịch chạy phép ép kiểu dòng thừa bỏ di d Đoạn mã biên dịch thành công phát sinh Exceptiono dòng kiểu lớp đối tượng biến wawa lúc thi hành chuyển sang kiểu SwampThing 68 Cho đoạn mã sau :Racoon rocky; :SwampThing pogo; :Washer w; 4: :rocky = new Racooon(); :w = rocky; :pogo = w; a Dòng 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 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ã biên dịch phát sinh Exception dòng chuyển đổi kiểu thực thi từ interface sang class không phép d Đoạn mã biên dịch phát sinh Exception dòng kiểu lớp w thời điểm thực thi chuyển sang kiểu SwampThing 69 Cho đoạn mã sau: : for (int i = 0; i < 2; i++){ : for (int j = 0; j < 3; j++){ Trang 88 : if (i == j){ : continue; 5:} : System.out.println(“i = “ + i + “j = “ + j); 7:} 8:} Dòng số kết in ra? a i = j = b i = j = c i = j = d i = j = 70 Cho đoạn mã sau: : outer: for (int i = 0; i < 2; i++){ : for (int j =0; j < 3; j++){ : if (i == j){ : continue outer; 5:} : System.out.println(“i = “ + i + “j = “ + j); 7:} 8:} Dòng số kết in ra? a i = j = b i = j = c i = j = d i = j = 71 Chọn vòng lặp a : while (int i < 7){ : i++; : System.out.println(“i is “ + i); 4:} b : int i = 3; : while (i){ : System.out.println(“i is “ + i); 8:} c : int j = 0; : for(int k = 0; j + k != 10; j++, k++){ : System.out.println(“j is “ + j + “ k is “ + k); 4:} d : int j = 0; : do{ : System.out.println(“j is “ + j++); : if (j == 3) { continue loop;} : }while (j < 10); 72 Cho biết kết xuất đoạn mã sau : int x = 0, y = 4, z = 5; : if ( x > 2){ : if (y < 5){ : System.out.println(“message one”); 5:} Trang 89 : else{ : 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 d message four 73 Chọn phát biểu cho đoạn mã sau: : int j = 2; : switch (j){ : case 2: : System.out.println(“value is two”); : case + 1: : System.out.println(“value is three”); : break; : default: : 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 b Biến j cấu trúc switch() kiểu: byte, short, int long c Kết xuất chương trình dòng: value is two d Kết xuất chương trình dòng: value is two value is three 74 Cho biết kết sau dịch thực thi đoạn chương trình sau: import java.awt.*; public class Test extends Frame { Test() { setSize(300,300); Button b = new Button(“Apply”); add(b); } 10 public static void main(String args[]) { 11 Test f = new Test(); 12 f.setVisible(true); 13 } 14 } a) Có lỗi biên dịch dòng 11 constructor dòng không khai báo public b) Chương trình biên dịch thành công có ném exception thực thi câu lệnh dòng thứ c) Chương trình hiển thị frame trống d) Chương trình hiển thị nút nhấn (Button) sử dụng font chữ mặc định cho nhãn Button Button đủ lớn để bao quanh nhã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 choán tất vùng hiển thị frame Trang 90 75 Nếu frame dùng quản lý trình bày (layout manager) GridLayout không chứa panel hay container khác bên tất components đưa vào frame có kích thước (ngang, dọc)? a) Đúng b) Sai 76 Nếu frame dùng quản lý trình bày (layout manager) mặc định không chứa panel bên tất components bên frame kích thước (ngang, dọc) ? a) Đúng b) Sai 77 Với quản lý trình bày BorderLayout không thiết vùng phải có chứa components a) Đúng b) Sai 78 Bộ quản lý trình bày mặc định cho khung chứa kiểu Panel là: a) FlowLayout b) BorderLayout c) GridLayout d) GridBagLayout 79 Một Container có quản lý trình bày GridBagLayout component có kích thước thêm vào khung chứa (container) này? a) Đúng b) Sai 80 Bạn tạo cửa sổ ứng dụng cách gọi: Frame f = new Frame(“Main Frame”); Nhưng bạn chạy chương trình Frame không hiển thị Dòng bên 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 bên chứa menubar (chọn câu đúng) a) Panel b) ScrollPane c) Frame d) Menu 82 Sau tạo frame câu lệnh Frame f = new Frame() tạo menu bar câu lệnh MenuBar mb = new MenuBar(), làm để 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) 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 Trang 91 [...]... HƯỚNG ĐỐI TƯỢNG TRONG JAVA 3.1.Mở đầu Thông qua chuyên đề lập trình hướng đối tượng (OOP) chúng ta đã biết OOP là một trong những tiếp cận mạnh mẽ, và rất hiệu quả để xây dựng nên những chương trình ứng dụng trên máy tính Từ khi ra đời cho đến nay lập trình OOP đã chứng tỏ được sức mạnh, vai trò của nó trong các đề án tin học Chương này sẽ giúp bạn đọc tìm hiểu về các kiểu dữ liệu dẫn xuất đó là lớp... thức finalize() Trong java không có kiểu dữ liệu con trỏ như trong C, người lập trình không cần phải quá bận tâm về việc cấp phát và giải phóng vùng nhớ, sẽ có một trình dọn dẹp hệ thống đảm trách việc này Trình dọn dẹp hệ thống sẽ dọn dẹp vùng nhớ cấp phát cho các đối tượng trước khi hủy một đối tượng Phương thức finalize() là một phương thức đặc biệt được cài đặt sẵn cho các lớp Trình dọn dẹp hệ thống... (interface), cũng như các vấn đề cơ bản về lập trình hướng đối tượng trong java thông qua việc tạo lập các lớp, các đối tượng và các tính chất của chúng 3.2.Lớp (Class) 3.2.1.Khái niệm Chúng ta có thể xem lớp như một khuôn mẫu (template) của đối tượng (Object) Trong đó bao gồm dữ liệu của đối tượng (fields hay properties) và các phương thức(methods) tác động lên thành phần dữ liệu đó gọi là các phương thức... dữ liệu, khác số lượng tham số) gọi là khai báo chồng phương thức (overloading method) Ví dụ: public class xemay { // khai báo fields… public float tinhgiaban() { return 2 * chiphisx; } public float tinhgiaban(float huehong) { return (2 * chiphisx + huehong); } } 3.3.Đặc điểm hướng đối tượng trong java Hỗ trợ những nguyên tắc cơ bản của lập trình hướng đối tượng, tất cả các ngôn ngữ lập trình kể cả java. .. dữ liệu cơ sở (Wrapper Class) Data type Wrapper Class Ghi chú (java. lang.*) boolean Boolean byte Byte short Short char Character int Integer long Long Float Float double Double - Gói (package): chứa nhóm nhiều class - Ngoài các Wrapper Class, gói java. lang còn cung cấp các lớp nền tảng cho việc thiết kế ngôn ngữ java như: String, Math, … 2.8.Kiểu dữ liệu mảng Như chúng ta đã biết Java có 2 kiểu dữ liệu. .. phần dữ liệu và các đoạn mã cài đặt các thao tác xử lý trên các đối tượng dữ liệu đó Java dùng class để xây dựng những đối tượng Những đối tượng là những thể hiện (instances) của một class Một lớp bao gồm thành phần dữ liệu và thành phần xử lý Thành phần dữ liệu của một lớp thường bao gồm các biến thành viên và các biến thể hiện của lớp Thành phần xử lý là các thao tác trên các thành phần dữ liệu, thường... chẳng hạn), một chuỗi được xem như một mảng các ký tự Trong java thì khác, java cung cấp một lớp String để làm việc với đối tượng dữ liệu chuỗi cùng khác thao tác trên đối tượng dữ liệu này 2.9.Một số ví dụ minh họa: Ví dụ 1: Nhập ký tự từ bàn phím import java. io.*; /* gói này cung cấp thự viện xuất nhập hệ thống thông qua những luồng dữ / /liệu và hệ thống file.*/ class InputChar { public static void... giải phóng, dọn dẹp vùng nhớ đã cấp phát cho các đối tượng dữ liệu trong phương thức finalize() sẽ giúp cho người lập trình chủ động kiểm soát tốt quá trình hủy đối tượng thay vị giao cho trình dọn dẹp hệ thống tự động Đồng thời việc cài đặt trong phương thức finalize() sẽ giúp cho bộ nhớ được giải phóng tốt hơn, góp phần cải tiến tốc độ chương trình Ví dụ: class A { // Khai báo các thuộc tính public void... { ; ; constructor method_1 method_2 } class: là từ khóa của java ClassName: là tên chúng ta đặt cho lớp field_1, field_2: các thuộc tính, các biến, hay các thành phần dữ liệu của lớp constructor: là sự xây dựng, khởi tạo đối tượng lớp method_1, method_2: là các phương thức/hàm thể hiện các thao tác xử lý, tác động lên các thành phần dữ liệu của lớp... cho vùng dữ liệu của các đối tượng người ta tránh dùng tiền tố public, mà thường chọn tiền tố private để ngăn cản quyền truy cập đến vùng dữ liệu của một lớp từ các phương thức bên ngoài lớp đó 3.2.5.Hàm - Phương thức lớp (Method) Hàm hay phương thức (method) trong Java là khối lệnh thực hiện các chức năng, các hành vi xử lý của lớp lên vùng dữ liệu Khai báo phương thức: ... thành java shooter” Một số vấn đề nâng ngôn ngữ lập trình java như: javabean, thiết kết giao diện dùng thư viện JFC (Java Foundation Class), lập trình mạng, lập trình sở liệu java, lập trình ứng... thập niên 90 Chương trình viết ngôn ngữ lập trình java chạy hệ thống có cài máy ảo java (Java Virtual Machine) 1.2.2.Lịch sử phát triển ngôn ngữ lập trình Java Ngôn ngữ lập trình Java James Gosling... máy ảo, cấu trúc chương trình đơn giản viết Java cách xây dựng, dịch thực thi chương trình Java 1.2.Giới thiệu ngôn ngữ lập trình Java 1.2.1 Java gì? Java ngôn ngữ lập trình hướng đối tượng (tựa

Ngày đăng: 03/12/2015, 14:08

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan