Giáo trình Lập trình Java - Phạm Đình Nam

ỦY BAN NHÂN DÂN TỈNH LÂM ĐỒNG  
TRƢỜNG CAO ĐẲNG NGHỀ ĐÀ LẠT  
GIÁO TRÌNH  
MÔN HỌC/ MÔ ĐUN: LẬP TRÌNH JAVA  
NGÀNH/ NGHỀ: THIẾT KẾ TRANG WEB  
TRÌNH ĐỘ: CAO ĐẲNG  
Ban hành kèm theo Quyết định số: 1157/QĐ-CĐNĐL ngày 11 tháng 12 năm  
2019 của Hiệu trưởng Trường Cao đẳng Nghề Đà Lạt  
(LƢU HÀNH NỘI BỘ)  
Lâm Đồng, năm 2019  
LỜI GIỚI THIỆU  
Vài nét về xuất xứ giáo trình:  
Giáo trình này đƣợc viết theo căn cứ Thông tƣ số 03/2017/TT-BLĐTBXH ngày 01  
tháng 03 năm 2017 của Bộ Lao động – Thƣơng binh và Xã hội về việc Quy định về quy  
trình xây dựng, thẩm định và ban hành chƣơng trình; tổ chức biên soạn, lựa chọn, thẩm  
định giáo trình đào tạo trình độ trung cấp, trình độ cao đẳng.  
Quá trình biên soạn:  
Giáo trình này đƣợc biên soạn có sự tham gia tích cực của các giáo viên có kinh  
nghiệm, cùng với những ý kiến đóng góp quý báu của các chuyên gia về lĩnh vực công  
nghệ thông tin.  
Mối quan hệ của tài liệu với chương trình, mô đun/môn học:  
Căn cứ vào chƣơng trình đào tạo nghề Thiết kế trang web, giáo trình giúp cung cấp  
cho ngƣời học những kiến thức cơ bản về ngôn ngữ lập trình Java cũng nhƣ kỹ năng lập  
trình giao diện ngƣời dùng theo phƣơng pháp hƣớng đối tƣợng.  
Để học đƣợc mô đun này ngƣời học cần có kiến thức cơ bản về lập trình cơ bản.  
Cấu trúc chung của giáo trình này bao gồm 5 chương:  
Lời cảm ơn  
Giáo trình đƣợc biên soạn trên cơ sở các văn bản quy định của Nhà nƣớc và tham  
khảo nhiều tài liệu liên quan có giá trị. Song chắc hẳn quá trình biên soạn không tránh  
khỏi những thiếu sót nhất định. Ban biên soạn mong muốn và thực sự cảm ơn những ý  
kiến nhận xét, đánh giá của các chuyên gia, các thầy cô đóng góp cho việc chỉnh sửa để  
giáo trình ngày một hoàn thiện hơn.  
Lâm Đồng, ngày 10 tháng 12 năm 2019  
Tham gia biên soạn  
1. Phạm Đình Nam  
2. Ngô Thiên Hoàng  
3. Nguyễn Quỳnh Nguyên  
4. Phan Ngọc Bảo  
Trang 2  
Trang 3  
Tên môn học: LẬP TRÌNH JAVA  
I. Vị trí, tính chất của môn học:  
1. Vị trí: đƣợc bố trí giảng sau môn học: Lập trình căn bản.  
2. Tính chất: Là môn học tự chọn áp dụng cho trình độ Cao đẳng Công nghệ thông tin  
(ứng dụng phần mềm).  
II. Mục tiêu môn học:  
1. Về kiến thức:  
-
Xác định rõ đặc điểm, môi trƣờng phát triển - hoạt động, khả năng ứng dụng của  
ngôn ngữ Java;  
-
-
Trình bày đƣợc qui trình biên soạn, biên dịch và thực thi một ứng dụng Java;  
Trình bày đƣợc khái niệm, tính năng, cách sử dụng của các nền tảng của Java  
nhƣ các kiểu dữ liệu, các cấu trúc điều khiển, kỹ thuật hƣớng đối tƣợng,... của  
Java;  
-
Liệt kê đƣợc tính năng, đặc điểm của thƣ viện đồ họa AWT cũng nhƣ cách xử lý  
các biến cố trong giao diện ứng dụng;  
-
-
Trình bày đƣợc về khái niệm, cách xử lý với các luồng vào ra dữ liệu, tập tin;  
Trình bày đƣợc cách kết nối ứng dụng Java với cơ sở dữ liệu và các thao tác  
tƣơng tác dữ liệu: cập nhật, truy vấn,....  
2. Về kỹ năng:  
-
Viết và thực thi đƣợc các chƣơng trình ứng dụng Java xử lý một số yêu cầu đơn  
giản;  
Thiết kế đƣợc các ứng dụng với các giao diện đồ họa đẹp, thân thiện với các tính  
-
năng thông dụng, kết nối đƣợc và tƣơng tác đƣợc trên các hệ cơ sở dữ liệu: thêm,  
xem, xóa,... dữ liệu;  
3.  
Về năng lực tự chủ và trách nhiệm:  
-
Có khả năng tự nghiên cứu, tự học, tham khảo tài liệu liên quan đến môn học để  
vận dụng vào hoạt động hoc tập.  
-
Vận dụng đƣợc các kiến thức tự nghiên cứu, học tập và kiến thức, kỹ năng đã  
đƣợc học để hoàn thiện các kỹ năng liên quan đến môn học một cách khoa học,  
đúng quy định.  
III. Nội dung môn học:  
Trang 4  
 
Chƣơng 1: GIỚI THIỆU TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH  
JAVA  
Mã bài : 1  
Mục tiêu:  
- Trình bày khái niệm về Java: bản chất, lịch sử phát triển;  
- Nêu đƣợc một số ứng dụng cơ bản, kiểu chƣơng trình Java;  
- Mô tả đƣợc môi trƣờng phát triển (JDK), công cụ soạn thảo Java;  
- Cài đặt đƣợc môi trƣờng phát triển, công cụ soạn thảo, máy ảo Java;  
- Thái độ nghiêm túc, cẩn thận.  
1.  
Giới thiệu về ngôn ngữ lập trình Java  
1.1 Java là gì?  
Java là ngôn ngữ lập trình hƣớng đối tƣợng (tựa C++) do Sun Microsystem đƣa  
ra vào giữa thập niên 90.  
Chƣơng trình viết bằng ngôn ngữ lập trình java có thể chạy trên bất kỳ hệ thống  
nào có cài máy ảo java (Java Virtual Machine).  
1.2 Lịch sử phát triển của ngôn ngữ lập trình Java  
Ngôn ngữ lập trình Java do James Gosling và các công sự của Công ty Sun  
Microsystem phát triển.  
Đầu thập niên 90, Sun Microsystem tập hợp các nhà nghiên cứu thành lập nên  
nhóm đặt tên là Green Team. Nhóm Green Team có trách nhiệm xây dựng công nghệ  
mới cho ngành điện tử tiêu dùng. Để giải quyết vấn đề này nhóm nghiên cứu phát triển  
đã xây dựng một ngôn ngữ lập trình mới đặt tên là Oak tƣơng tự nhƣ C++ nhƣng loại bỏ  
một số tính năng nguy hiểm của C++ và có khả năng chạy trên nhiều nền phần cứng  
khác nhau. Cùng lúc đó world wide web bắt đầu phát triển và Sun đã thấy đƣợc tiềm  
năng của ngôn ngữ Oak nên đã đầu tƣ cải tiến và phát triển. Sau đó không lâu ngôn ngữ  
mới với tên gọi là Java ra đời và đƣợc giới thiệu năm 1995.  
Java là tên gọi của một hòn đảo ở Indonexia, Đây là 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 trong một chuyến đi tham quan và  
làm việc trên hòn đảo này. Hòn đảo Java này là nơi rất nổi tiếng với nhiều khu vƣờn  
trồng cafe, đó chính là lý do chúng ta thƣờng thấy biểu tƣợng ly café trong nhiều sản  
phẩm phần mềm, công cụ lập trình Java của Sun cũng nhƣ một số hãng phần mềm khác  
đƣa ra.  
1.3 Một số đặc điểm nổi bậc của Java  
Máy ảo Java (JVM - Java Virtual Machine).  
Tất cả các chƣơng trình muốn thực thi đƣợc thì phải đƣợc biên dịch ra mã máy.  
Mã máy của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của  
CPU Intel, CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trƣớc đây một chƣơng  
trình sau khi đƣợc biên dịch xong chỉ có thể chạy đƣợc trên một kiến trúc CPU cụ thể  
nào đó. Đối với CPU Intel chúng ta có thể chạy các hệ điều hành nhƣ Microsoft  
Windows, Unix, Linux, OS/2, … Chƣơng trình thực thi đƣợc trên Windows đƣợc biên  
dịch dƣới dạng file có đuôi .EXE còn trên Linux thì đƣợc biên dịch dƣới dạng file có  
đuôi .ELF, vì vậy trƣớc đây một chƣơng trình chạy đƣợc trên Windows muốn chạy đƣợc  
trên hệ điều hành khác nhƣ Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại. Ngôn  
ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên đã đƣợc khắc  
phục. Một chƣơng trình viết bằng ngôn ngữ lập trình Java sẽ đƣợc biên dịch ra mã của  
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 các  
máy ảo Java chạy trên các hệ điều hành trên các kiến trúc CPU khác nhau.  
Trang 5  
   
Thông dịch:  
Java là một 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 bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên đƣợc biên dịch thành tập tin có  
đuôi *.class và sau đó sẽ đƣợc 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 bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ  
điều hành khác nhau (Windows, Unix, Linux, …) miễn sao ở đó có cài đặt máy ảo java  
(Java Virtual Machine). Viết một lần chạy mọi nơi (write once run anywhere).  
Hƣớng đối tƣợng:  
Hƣớng đối tƣợng trong Java tƣơng tự nhƣ C++ nhƣng Java là một ngôn ngữ lập  
trình hƣớng đối tƣợng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên quan  
đến các đối tƣợng đƣợc định nghĩa trƣớc, thậm chí hàm chính của một chƣơng trình viết  
bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hƣớng đối tƣợng trong  
Java không có tính đa kế thừa (multi inheritance) nhƣ trong C++ mà thay vào đó Java  
đƣa ra  
khái niệm interface để hỗ trợ tính đa kế thừa. Vấn đề này sẽ đƣợc bàn chi tiết  
trong chƣơng 3.  
Đ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 có  
thể chạy song song cùng một thời điểm và tƣơng tác với nhau.  
Khả chuyển (portable):  
Chƣơng trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy đƣợc trên máy ảo  
Java là có thể chạy đƣợc trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java. “Viết  
một lần, chạy mọi 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 nhau cụ thể nhƣ: J2SE (Java 2 Standard Edition) hỗ trợ phát triển  
những ứng dụng đơn, ứng dụng client-server; J2EE (Java 2 Enterprise Edition) hỗ trợ  
phát triển các ứng dụng thƣơng mại, J2ME (Java 2 Micro Edition) hỗ trợ phát triển các  
ứng dụng trên các thiết bị di động, không dây, …  
2.  
Các ứng dụng Java  
2.1. Java và ứng dụng Console  
Ứng dụng Console là ứng dụng nhập xuất ở chế độ văn bản tƣơng tự nhƣ màn  
hình Console của hệ điều hành MS-DOS. Lọai chƣơng trình ứng dụng này thích hợp với  
những ai 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 đƣợc dùng để minh họa các ví dụ cơ bản liên quan đến cú pháp ngôn ngữ, các  
thuật toán, và các chƣơng trình ứng dụng không cần thiết đến giao diện ngƣời dùng đồ  
họa.  
Hình 1.1 Ứng dụng Console  
Trang 6  
 
public class HelloWorld  
{
public static void main(String args[])  
{
System.out.print("Hello World! Chao cac ban lop Cao Dang Lap Trinh May  
Tinh\n");  
}
}
2.2 Java và ứng dụng Applet  
Java Applet là loại ứng dụng có thể nhúng và chạy trong trang web của một trình  
duyệt web. Từ khi internet mới ra đời, Java Applet cung cấp một khả năng lập trình  
mạnh mẽ cho các trang web. Nhƣng gần đây khi các chƣơng trình duyệt web đã phát  
triển với khả năng lập trình bằng VB Script, Java Script, HTML, DHTML, XML,  
cùng với sự canh tranh khốc liệt của Microsoft và Sun đã làm cho Java Applet lu mờ.  
Và cho đến bây giờ gần nhƣ các lập trình viên đều không còn "mặn mà" với Java Applet  
nữa. (trình duyệt IE đi kèm trong phiên bản Windows 2000 đã không còn mặc nhiên hỗ  
trợ thực thi một ứng dụng Java Applet). Hình bên dƣới minh họa một chƣơng trình java  
applet thực thi trong một trang web.  
Hình 1.2 Ứng dụng Applet  
2.3 . Java và phát triển ứng dụng Desktop dùng AWT và JFC  
Việc phát triển các chƣơng trình ứng dụng có giao diện ngƣời dùng đồ họa trực  
quan giống nhƣ những chƣơng trình đƣợc viết dùng ngôn ngữ lập trình VC++ hay  
Visual Basic đã đƣợc java giải quyết bằng thƣ viện AWT và JFC. JFC là thƣ viện rất  
phong phú và hỗ trợ mạnh mẽ hơn nhiều so với AWT. JFC giúp cho ngƣời lập trình có  
thể tạo ra một giao diện trực quan của bất kỳ ứng dụng nào. Liên quan đến việc phát  
triển các ứng dụng  
có giao diện ngƣời dùng đồ họa trực quan chúng ta sẽ tìm hiểu chi tiết trong  
chƣơng 4.  
2.4. Java và phát triển ứng dụng Web  
Java hỗ trợ mạnh mẽ đối với việc phát triển các ứng dụng Web thông qua công  
nghệ J2EE (Java 2 Enterprise Edition). Công nghệ J2EE hoàn toàn có thể tạo ra các ứng  
dụng Web một cách hiệu quả không thua kém công nghệ .NET mà Microsft đang quảng  
cáo.  
Hiện nay có rất nhiều trang Web nổi tiếng ở Việt Nam cũng nhƣ khắp nơi trên  
thế giới đƣợc xây dựng và phát triển dựa trên nền công nghệ Java. Số ứng dụng Web  
đƣợc xây dựng dùng công nghệ Java chắc chắn không ai có thể biết đƣợc con số chính  
Trang 7  
xác là bao nhiêu, nhƣng chúng tôi đƣa ra đây vài ví dụ để thấy rằng công nghệ Java của  
Sun là một "đối thủ đáng gờm" của Microsoft.  
Chắc không ít ngƣời trong chúng ta biết đến trang web thông tin nhà đất nổi tiếng  
ở TPHCM đó là: http://www.nhadat.com/. Ứng dụng Web này cũng đƣợc xây dựng dựa  
trên nền công nghệ java. Bạn có thể tìm hiểu chi tiết hơn về công nghệ J2EE tạo địa chỉ:  
2.5. Java và phát triển các ứng dụng nhúng  
Java Sun đƣa ra công nghệ J2ME (The Java 2 Platform, MicroEdition J2ME) hỗ  
trợ phát triển các chƣơng trình, phần mềm nhúng. J2ME cung cấp một môi trƣờng cho  
những chƣơng trình ứng dụng có thể chạy đƣợc trên các thiết bị cá nhân nhƣ: điện thọai  
di động, máy tính bỏ túi PDA hay Palm, cũng nhƣ các thiết bị nhúng khác. Bạn có thể  
tìm hiểu chi tiết hơn về công nghệ J2ME tại địa chỉ: http://java.sun.com/j2me/  
3.  
Dịch và thực thi một chƣơng trình viết bằng Java  
Việc xây dựng, dịch và thực thi một chƣơng trình viết bằng ngôn ngữ lập trình  
java có thể tóm tắt qua các bƣớc sau:  
- Viết mã nguồn: dùng một chƣơng trình soạn thảo nào đấy (NotePad hay  
Jcreator chẳng hạn) để viết mã nguồn và lƣu lại với tên có đuôi ".java"  
- Biên dịch ra mã máy ảo: dùng trình biên dịch javac để biên dịch mã nguồn  
".java" thành mã của máy ảo (java bytecode) có đuôi ".class" và lƣu lên đĩa  
- Thông dịch và thực thi: ứng dụng đƣợc load vào bộ nhớ, thông dịch và thực thi  
dùng trình thông dịch Java thông qua lệnh "java".  
Đƣa mã java bytecode vào bộ nhớ: đây là bƣớc "loading". Chƣơng trình  
phải đƣợc đặt vào trong bộ nhớ trƣớc khi thực thi. "Loader" sẽ lấy các files chứa mã  
java bytecode có đuôi ".class" và nạp chúng vào bộ nhớ.  
Kiểm tra mã java bytecode: trƣớc khi trình thông dịch chuyển mã  
bytecode thành mã máy tƣơng ứng để thực thi thì các mã bytecode phải đƣợc kiểm tra  
tính hợp lệ.  
Thông dịch & thực thi: cuối cùng dƣới sự điều khiển của CPU và trình  
thông dịch tại mỗi thời điểm sẽ có một mã bytecode đƣợc chuyển sang mã máy và thực  
thi.  
4.  
Công cụ lập trình và chƣơng trình dịch  
4.1. JDK7  
Download JDK phiên bản mới nhất tƣơng ứng với hệ điều hành đang sử dụng từ  
địa chỉ java.sun.com và cài đặt lên máy tính (phiên bản đƣợc chúng tôi sử dụng khi viết  
giáo trình này là JDK 1.7.0). Sau khi cài xong, chúng ta cần cập nhật đƣờng dẫn PATH  
hệ thống chỉ đến thƣ mục chứa chƣơng trình dịch của ngôn ngữ java.  
Trang 8  
   
Hình 1.3 Cập nhật đƣờng dẫn  
4.2.Công cụ soạn thảo mã nguồn Java.  
Để viết mã nguồn java chúng ta có thể sử dụng trình soạn thảo NotePad hoặc một  
số môi trƣờng phát triển hỗ trợ ngôn ngữ java nhƣ: Jbuilder của hãng Borland, Visual  
Café của hãng Symantec, JDeveloper của hãng Oracle, Visual J++ của Microsoft,  
…
Trong khuôn khổ giáo trình này cũng nhƣ để hƣớng dẫn sinh viên thực hành  
chúng tôi dùng công cụ JCreator LE của hãng XINOX Software. Các bạn có thể  
download  
5.  
Bài tập  
Bài tập 1:.Trình bày khả năng của ngôn ngữ lập trình Java  
Bài tập 2:.Hãy nêu những đặc điểm của ngôn ngữ lập trình Java  
Bài tập 3:Trình bày các ứng dụng của ngôn ngữ lập trình Java  
Bài tập 4: Download JDK phiên bản mới nhất tƣơng ứng với hệ điều hành đang  
sử dụng từ địa chỉ java.sun.com và cài đặt lên máy tính. Thực thi chƣơng trình  
HelloWorld.  
Trang 9  
 
CHƢƠNG 2 NỀN TẢNG CỦA JAVA  
Mã bài : 2  
Mục tiêu:  
Trình bày đƣợc khái niệm cơ bản về ngôn ngữ Java: tập kí tự, từ khóa, cấu trúc  
chƣơng trình, các kiểu dữ liệu, các toán tử, biến, hằng,...;  
Xác định đƣợc các cấu trúc điều khiển cơ bản của ngôn ngữ lập trình Java;  
Đọc hiểu và thực thi một số chƣơng trình đầu tiên viết bằng Java;  
Viết một số chƣơng trình Java thực hiện các yêu cầu đơn giản;  
Nghiêm túc, cẩn thận, sáng tạo trong học lý thuyết và thực hành.  
2.1 Tập ký tự, từ khóa, định danh  
2.1.1 Ký hiệu cơ sở  
Ngôn ngữ Java đƣợc xây dựng từ bộ ký hiệu cơ sở sau:  
Bộ 26 chữ cái La-Tinh viết thƣờng (nhỏ): a,b,...,z.  
Bộ 26 chữ cái La-Tinh viết hoa (lớn): A,B,...,Z.  
Bộ 10 chữ số hệ thập phân : 0,1,...,9.  
Bộ dấu các toán tử số học : + - * /  
Bộ dấu các toán tử so sánh: < > =  
Ký tự gạch nối:  
_ ( Khác dấu trừ - ).  
Các ký hiệu khác: ' " ; ,.: [ ] # $ & { } % ! . . .  
Đặc biệt có khoảng trắng dùng để ngăn cách các từ (phím Space). Các ký hiệu cơ  
sở đều có trên bàn phím.  
2.1.2 Các từ  
Từ trong Java đƣợc xây dựng bởi các ký hiệu cơ sở trên. Có 2 loại từ: Từ khóa và  
tên.  
a. Từ khóa (Key Word)  
Là những từ có ý nghĩa hoàn toàn xác định, chúng thƣờng đƣợc dùng để khai báo  
các kiểu dữ liệu, để viết các toán tử, và các câu lệnh. Sau đây là một số từ khóa trong  
Java:  
asm  
clas  
dou  
frie  
auto  
cons  
else  
goto  
oper  
shor  
tem  
brea  
cont  
enu  
if  
case  
defa  
exte  
Inli  
catc  
dele  
float  
int  
char  
do  
for  
long  
regi  
stru  
type  
whil  
new  
retu  
swit  
unio  
priv  
sign  
this  
virt  
Prot  
Size  
thro  
void  
publ  
stati  
try  
unsi  
vola  
cdec  
hug  
_cs  
_ds  
_loa  
_ss  
_es  
_ex  
far  
inter  
_seg  
Nea  
pasc  
_reg  
_sav  
b. Tên hoặc danh hiệu (identifier):  
Là từ do ngƣời sử dụng tự đặt để giải quyết bài toán của mình. Từ tự đặt dùng để  
đặt tên cho hằng, biến, hàm, tên kiểu dữ liệu mới,...  
Tên đƣợc đặt theo quy tắc: phải bắt đầu bằng một chữ cái hoặc dấu gạch nối,sau  
đó là các chữ cái, chữ số hoặc dấu gạch nối, và không đƣợc trùng với từ khóa.  
Trang 10  
   
Tên có thể viết bằng chữ thƣờng hoặc chữ hoa. Trong java có phân biệt chữ  
thƣờng và chữ hoa.  
2.2 Cấu trúc của một chƣơng trình Java  
Java là một ngôn ngữ thuần đối tƣợng (pure object). Tất cả các thành phần đƣợc  
khai báo nhờ hằng, biến, hàm thủ tục đều phải nằm trong phạm vi của một lớp nào đó.  
Một ứng dụng trong Java là một tập hợp các lớp liên quan nhau, bao gồm các lớp trong  
thƣ viện do Java cung cấp và các lớp đƣợc định nghĩa bởi ngƣời lập trình. Trong một  
ứng dụng chỉ có một Lớp thực thi đƣợc. Đây là lớp đầu tiên đƣợc xem xét đến khi chúng  
ta thực thi ứng dụng.  
Lớp thực thi đƣợc này có các đặc điểm sau:  
Có tên lớp trùng với tên tập tin chứa nó.  
Phải khai báo phạm vi là public  
Có chứa phƣơng thức:  
public static void main (String args[]){  
. . .  
}
là phƣơng thức đƣợc thực thi đầu tiên.  
Nếu nhiều lớp đƣợc định nghĩa trong một tập tin, chỉ có một lớp đƣợc khai báo  
public.  
2.3 Chƣơng trình java đầu tiên  
2.3.1. Chƣơng trình HelloWorld  
Trong ví dụ này, chúng ta viết một chƣơng trình ứng dụng in ra màn hình dòng  
chữ "Hello World !". Đây là ứng dụng đơn giản chỉ có một lớp thực thi đƣợc  
tên là HelloWorld. Lớp này đƣợc khai báo là public, có phƣơng thức main(), chứa  
trong tập tin cùng tên là HelloWorld.java (phần mở rộng bắt buộc phải là .java).  
Hình 2.1 Dùng Notepad biên soạn tập tin cùng tên là HelloWorld.java  
Phƣơng thức System.out.print() sẽ in tất cả các tham số trong dấu () của nó ra  
màn hình.  
Ta có thể dùng bất kỳ chƣơng trình sọn thảo nào để biên soạn chƣơng trình,  
nhƣng chú ý phải ghi lại chƣơng trình với phần mở rộng là .java  
2.3.2. Biên soạn chƣơng trình bằng phần mềm Notepad của Ms Windows  
Notepad là trình soạn thảo đơn giản có sẵn trong MS Windows mà ta có thể dùng  
để biên soạn chƣơng trình HelloWorld. Hãy thực hiện các bƣớc sau:  
.
Chạy chƣơng trình Notepad:  
+ Chọn menu Start \ Programs \ Accessories \ Notepad  
.
Nhập nội dung sau vào Notepad  
public class HelloWorld {  
public static void main(String args[]) {  
System.out.print("Hello World! Chao cac ban lop Cao Dang Lap Trinh May  
Tinh\n");  
Trang 11  
   
}
}
.
Save tập tin với tên HelloWorld.java  
+ Chọn menu File \ Save  
+ Tại cửa sổ Save As hãy nhập vào:  
.
.
.
.
Save in: Thƣ mục nơi sẽ lƣu tập tin  
File Name: HelloWorld.java  
Save as type: All Files  
Nhấp vào nút Save  
2.3.4. Biên dịch và thực thi chƣơng trình  
Mở cửa sổ MS-DOS: Chọn menu Start \ Programs \ Accessories \  
Command Prompt.  
.
.
.
Chuyển vào thƣ mục chứa tập tin HelloWorld.java  
Dùng chƣơng trình javac để biên dịch tập tin HelloWorld.java  
javac HelloWorld.java  
+ Nếu có lỗi, trên màn hình sẽ xuất hiện thông báo lỗi với dấu ^ chỉ vị trí lỗi.  
+ Nếu không có lỗi, tập tin thực thi HelloWorld.class đƣợc tạo ra.  
.
Thực thi chƣơng trình HelloWorld.class  
java HelloWorld  
Hình 2.2 Kết quả thực thi chƣơng trình HelloWorld  
Trên màn hình sẽ xuất hiện dòng chữ Hello World! Chao cac ban lop Cao Dang  
Lap Trinh May Tinh  
2.4 Biến, hằng  
2.4.1. Biến  
- Biến là vùng nhớ dùng để lƣu trữ các giá trị của chƣơng trình. Mỗi biến gắn liền  
với một kiểu dữ liệu và một định danh duy nhất gọi là tên biến.  
- Tên biến thông thƣờng là một chuỗi các ký tự  
(Unicode), ký số.  
Tên biến phải bắt đầu bằng một chữ cái, một dấu gạch dƣới hay dấu  
Tên biến không đƣợc trùng với các từ khóa (xem phụ lục các từ khóa  
Tên biến không có khoảng trắng ở giữa tên.  
dollar.  
trong java).  
- Trong java, biến có thể đƣợc khai báo ở bất kỳ nơi đâu trong chƣơng trình.  
Cách khai báo  
<kiểu_dữ_liệu> <tên_biến>;  
<kiểu_dữ_liệu> <tên_biến> = <giá_trị>;  
Gán giá trị cho biến  
<tên_biến> = <giá_trị>;  
Trang 12  
 
Biến công cộng (toàn cục): là biến có thể truy xuất ở khắp nơi trong chƣơng  
trình, thƣờng đƣợc khai báo dùng từ khóa public, hoặc đặt chúng trong một class.  
Biến cục bộ: là biến chỉ có thể truy xuất trong khối lệnh nó khai  
báo.  
Lƣu ý: Trong ngôn ngữ lập trình java có phân biệt chữ in hoa và in thƣờng. Vì  
vậy chúng ta cần lƣu ý khi đặt tên cho các đối tƣơng dữ liệu cũng nhƣ các xử lý trong  
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);  
}
}
2.4.2. Hằng  
- Hằng là một giá trị bất biến trong chƣơng trình  
- Tên hằng đƣợc đặt theo qui ƣớc giống nhƣ tên biến.  
- Hằng số nguyên: trƣờng hợp giá trị hằng ở 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ị hằng có kiểu float ta  
thêm tiếp vĩ ngữ “f” hay “F”, còn kiểu số double thì ta  
thêm tiếp vĩ ngữ “d” hay “D”.  
- Hằng Boolean: java có 2 hằng boolean là true, false.  
- Hằng ký tự: là một ký tự đơn nằm giữa nằm giữa 2 dấu  
ngoặc đơn.  
o Ví dụ: „a‟: hằng ký tự a  
o Một số hằng ký tự đặc biệt  
Ký tự  
\b  
Ý nghĩa  
Xóa  
lùi  
\t  
Tab  
\n  
\r  
\”  
\‟  
Xuống hàng  
Dấu enter  
Nháy kép  
Nháy đơn  
Số ngƣợc  
\\  
Trang 13  
\f  
Đẩy trang  
\uxxxx  
Ký tự unicode  
- Hằng chuỗi: là tập hợp các ký tự đƣợc đặt giữa hai dấu nháy kép “”. Một hằng  
chuỗi không có ký tự nào là một hằng chuỗi rỗng.  
Ví dụ: “Hello Wolrd”  
Lƣu ý: Hằng chuỗi không phải là một kiểu dữ liệu cơ sở nhƣng vẫn  
đƣợc khai báo và sử dụng trong các chƣơng trình.  
2.5  
.
Các kiểu dữ liệu cơ sở  
Kiểu số  
- Java cung cấp 4 kiểu số nguyên khác nhau là: byte,short, int, long. Kích thƣớc,  
giá trị nhỏ nhất, lớn nhất, cũng nhƣ giá trị mặc định của các kiểu dữ liệu số nguyên đƣợc  
mô tả chi tiết trong bảng.  
- Kiểu mặc định của các số nguyên là kiểu int.  
- Các số nguyên kiểu byte và short rất ít khi đƣợc dùng.  
- Trong java không có kiểu số nguyên không dấu nhƣ  
trong ngôn ngữ C/C++.  
Tên kiểu  
byte  
Kích thƣớc  
1 byte  
short  
int  
long  
float  
double  
2 bytes  
4 bytes  
8 bytes  
4 bytes  
8 bytes  
Một số lƣu ý đối với các phép toán trên số nguyên:  
- Nếu hai toán hạng kiểu long thì kết quả là kiểu long.  
Một trong hai toán hạng không phải kiểu long sẽ đƣợc  
chuyển thành kiểu long trƣớc khi thực hiện phép toán.  
- Nếu hai toán hạng đầu không phải kiểu long thì phép tính sẽ thực hiện với kiểu  
int.  
- Các toán hạng kiểu byte hay short sẽ đƣợc chuyển sang kiểu int trƣớc khi thực  
hiện phép toán.  
- Trong java không thể chuyển biến kiểu int và kiểu boolean nhƣ trong ngôn ngữ  
C/C++.  
.
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 dữ liệu là float và  
double.  
Kiểu float có kích thƣớc 4 byte và giá trị mặc định là 0.0f  
Kiểu double có kích thƣớc 8 byte và giá trị mặc định là 0.0d  
Số kiểu dấu chấm động không có giá trị nhỏ nhất cũng không có giá trị lớn nhất.  
Chúng có thể nhận các giá trị:  
Trang 14  
 
- Số âm  
- Số dƣơng  
- Vô cực âm  
- Vô cực dƣơng  
Khai báo và khởi tạo giá trị cho các biến kiểu dấu chấm động:  
float x = 100.0/7;  
double y = 1.56E6;  
Một số lƣu ý đối với các phép toán trên số dấu chấm động:  
- Nếu mỗi toán hạng đều có kiểu dấn chấm động thì phép  
toán chuyển thành phép toán dấu chấm động.  
- Nếu có một toán hạng là double thì các toán hạng còn lại sẽ đƣợc chuyển thành  
kiểu double trƣớc khi thực hiện phép toán.  
- Biến kiểu float và double có thể ép chuyển sang kiểu dữ liệu khác trừ kiểu  
boolean.  
.
Kiểu ký tự char  
Java dùng 2 bytes cho kiểu ký tự, theo chuẩn mã UNICODE (127 ký tự đầu  
tƣơng thích với mã ASCII). Do đó, ta sử dụng tƣơng tự nhƣ bảng mã ASCII.  
Kiểu ký tự trong ngôn ngữ lập trình java có kích thƣớc là 2  
bytes và chỉ dùng để biểu diễn các ký tự trong bộ mã Unicode.  
Nhƣ vậy kiểu char trong java có thể biểu diễn tất cả 216 = 65536  
ký tự khác nhau.  
Giá trị mặc định cho một biến kiểu char là null.  
.
Kiểu chuỗi ký tự String  
Thực chất đây là một lớp nằm trong thƣ viện chuẩn của Java (Core API),  
java.lang.String  
Kiểu chuỗi là tập hợp các ký tự đƣợc đặt giữa hai dấu nháy kép “”. Một hằng  
chuỗi không có ký tự nào là một hằng chuỗi rỗng.  
o
o
Ví dụ: “Hello Wolrd”  
Lƣu ý: Hằng chuỗi không phải là một kiểu dữ liệu cơ sở nhƣng vẫn đƣợc  
khai báo và sử dụng trong các chƣơng trình.  
.
Kiểu luận lý boolean  
Nhận 2 giá trị là : true và false.  
- Trong java kiểu boolean không thể chuyển thành kiểu nguyên và ngƣợc lại.  
- Giá trị mặc định của kiểu boolean là false.  
.
Kiểu mảng  
Khai báo:  
+ int[] a ; float[] yt; String[] names;  
+ hoặc: int a[]; float yt[]; String names[];int maTran[][]; float  
bangDiem[][];  
Khởi tạo:  
+ a = new int[3]; yt = new float[10]; names = new String[50];  
+ maTran = int[10][10];  
Sử dụng mảng:  
+ int i = a[0]; float f = yt[9]; String str = names[20]; int x = matran [2][5];  
2.6 Lệnh, khối lệnh trong java  
Giống nhƣ trong ngôn ngữ C, các câu lệnh trong java kết thúc bằng một dấu  
chấm phẩy (;).  
Một khối lệnh là đoạn chƣơng trình gồm hai lệnh trở lên và đƣợc bắt đầu bằng  
Trang 15  
 
dấu mở ngoặc nhọn ({) và kết thúc bằng dấu đóng ngoặc nhọc (}).  
Bên trong một khối lệnh có thể chứa một hay nhiều lệnh hoặc chứa các khối lệnh  
khác.  
{ // khối 1  
{ // khối 2  
lệnh 2.1  
lệnh 2.2 …  
} // kết thúc khối lệnh 2  
lệnh 1.1  
lệnh 1.2  
…
} // kết thúc khối lệnh 1  
{ // bắt đầu khối lệnh 3  
// Các lệnh thuộc khối lệnh 3  
// …  
} // kết thúc thối lệnh 3  
2.7 Toán tử và biểu thức  
2.7.1.Toán tử số học  
Toá  
+
Ý nghĩa  
Cộng  
-
Trừ  
Nhân  
/
Chia nguyên  
Chia dƣ  
Tăng 1  
Giảm 1  
%
++  
--  
2.7.2.Toán tử trên bit  
Toán  
Ý nghĩa  
t
ử  
&
AND  
|
OR  
^
XOR  
<<  
>>  
>>>  
~
Dịch trái  
Dịch phải  
Dịch phải và điền 0 vào bit  
tr
ố
ng  
Bù bit  
27.3.Toán tử quan hệ & logic  
Toán tử  
Ý nghĩa  
==  
!=  
>
So sánh bằng  
So sánh khác  
So sánh lớn hơn  
Trang 16  
 
<
So sánh nhỏ hơn  
>=  
<=  
||  
So sánh lớn hơn hay bằng  
So sánh nhỏ hơn hay bằng  
OR (biểu thức logic)  
AND (biểu thức logic)  
NOT (biểu thức logic)  
&&  
!
2.7.4.Toán tử ép kiểu  
-
Ép kiểu rộng (widening conversion): từ kiểu nhỏ sang kiểu lớn (không mất  
mát thông tin)  
-
Ép kiểu hẹp (narrow conversion): từ kiểu lớn sang kiểu nhỏ (có khả năng  
mất mát thông tin)  
<tên biến> = (kiểu_dữ_liệu) <tên_biến>;  
Ví dụ float fNum = 2.2;  
int iCount = (int) fNum; // (iCount = 2)  
2.7.5.Toán tử điều kiện  
Cú pháp: <điều kiện> ? <biểu thức 1> : < biểu thức 2>  
Nếu điều kiện đúng thì có giá trị, hay thực hiện <biểu thức 1>, còn ngƣợc lại là  
<biểu thức 2>.  
<điều kiện>: là một biểu thức logic  
<biểu thức 1>, <biểu thức 2>: có thể là hai giá trị, hai biểu thức hoặc hai hành  
động.  
Ví dụ: int x = 10;  
int y = 20;  
int Z = (x<y) ? 30 : 40;  
// Kết quả z = 30 do biểu thức (x < y) là đúng.  
2.7.6 Thứ tự ƣu tiên tính từ trái qua phải và từ trên xuống dƣới  
Trang 17  
Cao  
()  
[]  
++  
--  
~
!
/
%
+
-
>>  
>>> (dịch  
<<  
<
phải và  
>
>=  
!=  
<
==  
&
^
|
&&  
||  
?:  
=
<toántử>=  
Thấ  
2.8 Cấu trúc điều khiển  
2.8.1. Lệnh if – else  
Cú pháp:  
if (Condition) {  
// Các lệnh sẽ đƣợc thực hiện nếu giá trị của Condition là true  
}
if (Condition) {  
// Các lệnh sẽ đƣợc thực hiện nếu giá trị của Condition là true  
} else {  
// Các lệnh sẽ đƣợc thực hiện nếu giá trị của Condition là false  
}
Ví dụ:  
Lƣu chƣơng trình sau vào tập tin IfDemo.java :  
import java.io.*;  
public class IfDemo {  
public static void main(String args[]) {  
System.out.print("Vui long nhap mot ky tu:");  
try {  
int ch = System.in.read();  
if (ch == 'A') {  
System.out.print("Ban rat may man !");  
}
else {  
System.out.print("Ban khong gap may !");  
}
} catch(IOException ie) { System.out.print("Error:"+ie);  
}
}
}
Biên dich và thực thi có kết quả nhƣ sau:  
Trang 18  
 
Hình 2.3 Kết quả thực thi tập tin IfDemo.java  
2.8.2. Phép toán ?  
Cú pháp:  
(condition) ? Operation1 : Operation2;  
Nếu điều kiện condition có giá trị là true lệnh sẽ trả về giá trị của biểu thức  
Operation1, ngƣợc lại sẽ trả về giá trị của biểu thức Operation2.  
Ví dụ:  
Lƣu chƣơng trình sau vào tập tin QuestionOp.java :  
import java.io.*;  
public class QuestionOp {  
public static void main(String args[]) {  
System.out.print("Vui long nhap mot ky tu:");  
try {  
int ch = System.in.read();  
int point = (ch == 'A') ? 10:0;  
System.out.print("Diem cua ban la:"+point);  
}
catch(IOException ie) { System.out.print("Error:"+ ie);  
}
}
}
Biên dịch và thực thi đƣợc kết quả nhƣ sau:  
Hình 2.4 Kết quả thực thi tập tin QuestionOp.java  
2.8.3. Lệnh switch  
Cú pháp  
switch ( variable ) {  
Trang 19  
Tải về để xem bản đầy đủ
pdf 97 trang baolam 29280 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình Java - Phạm Đình Nam", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_lap_trinh_java_pham_dinh_nam.pdf