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
1. Giới thiệu về ngôn ngữ lập trình Java .......................................................................5
2. Các ứng dụng Java ....................................................................................................6
3. Dịch và thực thi một chƣơng trình viết bằng Java ....................................................8
4. Công cụ lập trình và chƣơng trình dịch.....................................................................8
5. Bài tập........................................................................................................................9
CHƢƠNG 2 NỀN TẢNG CỦA JAVA............................................................................10
2.1 Tập ký tự, từ khóa, định danh..................................................................................10
2.2 Cấu trúc của một chƣơng trình Java ........................................................................11
2.3 Chƣơng trình java đầu tiên ......................................................................................11
2.4 Biến, hằng ................................................................................................................12
2.5 Các kiểu dữ liệu cơ sở..........................................................................................14
2.6 Lệnh, khối lệnh trong java .......................................................................................15
2.7 Toán tử và biểu thức ................................................................................................16
2.8 Cấu trúc điều khiển..................................................................................................18
2.9 Bài tập......................................................................................................................24
3.1.Mở đầu.....................................................................................................................26
3.2.Lớp (Class)...............................................................................................................26
3.3.Đặc điểm hƣớng đối tƣợng trong java.....................................................................30
3.4.Gói (packages) .........................................................................................................34
3.5.Giao diện (interface) ................................................................................................35
3.6. Mảng, xâu ký tự......................................................................................................36
3.7 Bài tập......................................................................................................................38
4.1.Mở đầu.....................................................................................................................46
4.2. Giới thiệu thƣ viện awt ...........................................................................................46
4. 3. Các khái niệm cơ bản.............................................................................................46
4. 4. Thiết kế GUI cho chƣơng trình..............................................................................48
4.5.Xử lý biến cố/sự kiện...............................................................................................59
4.6. Bài tập.....................................................................................................................66
CHƢƠNG 5: LUỒNG VÀ TẬP TIN................................................................................75
5.1.Mở đầu.....................................................................................................................75
5.2.Luồng (Streams) ......................................................................................................75
5.3.Sử dụng luồng Byte .................................................................................................78
5.4.File truy cập ngẫu nhiên (Random Access Files) ....................................................86
5.5.Sử dụng luồng ký tự.................................................................................................88
5.6.Lớp File....................................................................................................................93
Tài liệu tham khảo.............................................................................................................96
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
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ể
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
&
AND
|
OR
^
XOR
<<
>>
>>>
~
Dịch trái
Dịch phải
Dịch phải và điền 0 vào bit
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 đủ
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:
- giao_trinh_lap_trinh_java_pham_dinh_nam.pdf