Professional Documents
Culture Documents
2 Java
2 Java
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 2
Sơ lược về ngôn ngữ Java
Khả năng:
Ngôn ngữ bậc cao.
Có thể được dùng để tạo ra các loại ứng dụng để giải quyết các vấn đề về
số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác.
Có các thư viện hàm hỗ trợ xây dựng giao diện (GUI) như AWT, Swing, …
Có các môi trường lập trình đồ họa như JBuilder, NetBeans, Eclipse, …
Có khả năng truy cập dữ liệu từ xa thông qua cầu nối JDBC
Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket)
cũng như truy xuất Web hay nhúng vào trong trang Web (Applet).
Hỗ trợ lập trình phân tán (Remote Method Invocation) cho phép một ứng
dụng có thể được xử lý phân tán trên các máy tính khác nhau.
Lập trình trên thiết bị cầm tay (J2ME).
Xây dựng các ứng dụng trong môi trường xí nghiệp (J2EE).
...
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 3
Sơ lược về ngôn ngữ Java
Máy ảo Java:
.java
Để
Để thực
thực thi
thi một
một ứng
ứng dụng
dụng của
của
Java
Java trên
trên một
một hệ
hệ điều
điều hành
hành cụ
cụ
thể,
thể, cần
cần phải
phải cài
cài đặt
đặt máy
máy ảo
ảo
tương
tương ứng ứng cho
cho hệ
hệ điều
điều hành
hành đó:
đó: .class
JRE
JRE (Java
(Java Runtime
Runtime Environment)
Environment)
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 4
Sơ lược về ngôn ngữ Java
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 5
Sơ lược về ngôn ngữ Java
Applet:
Applet:
•• Ứng
Ứng dụng
dụng được
được nhúng
nhúng
vào
vào các
các trang
trang web.
web.
•• Mã
Mã ứng
ứng dụng
dụng được
được lấy
lấy
từ
từ web
web server
server
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 6
Sơ lược về ngôn ngữ Java
Application:
Application:
•• Ứng
Ứng dụng
dụng được
được thực
thực thi
thi
trên
trên các
các máy
máy ảo
ảo Java.
Java.
•• Bộ
Bộ thông
thông dịch
dịch dịch
dịch mã
mã
bytecode
bytecode của
của ứng
ứng dụng
dụng
thành
thành mãmã máy
máy đích.
đích.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 7
Sơ lược về ngôn ngữ Java
Mobile:
Mobile:
•• Ứng
Ứng dụng
dụng được
được thực
thực thi
thi trên
trên các
các máy
máy
ảo
ảo Java
Java trên
trên điện
điện thoại
thoại di
di động
động vàvà các
các
thiết
thiết bị
bị cầm
cầm tay.
tay.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 8
Java Development Kit (JDK)
Kiểu ký tự char:
2 bytes theo mã UNICODE
127 ký tự đầu trùng với mã ASCII
Kiểu chuỗi String:
Là một lớp trong ngôn ngữ java.
Có nhiều phương thức thao tác trên chuỗi.
Kiểu Boolean:
nhận 2 giá trị true / false
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 10
Mảng
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 = new int[10][10];
Sử dụng
int i = a[0]; float f = yt[9];
String str = names[20]; int x =
matran[0][0];
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 11
Các phép toán
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 12
Quy cách đặt tên
Tên phân biệt giữa chữ hoa và chữ thường.
Dùng các chữ cái, ký tự số, ký tự _ và $.
Không bắt đầu bằng ký tự số.
Không có khoảng trắng trong tên.
Quy ước:
Tên lớp:
Các ký tự đầu tiên của một từ được viết Hoa,
Các ký tự còn lại viết thường.
Ví dụ: lớp Nguoi, SinhVien, MonHoc, String, InputStream, . . .
Tên biến, tên hằng, tên phương thức:
Từ đầu tiên viết thường.
Ký tự đầu tiên của từ thứ hai trở đi được viết Hoa.
Ví dụ: ten, ngaySinh, diaChi, inDiaChi(), getInputStream(), . . .
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 13
Java - Ứng dụng kiểu application
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 14
Ứng dụng kiểu application
public
public class
class HelloWorld
HelloWorld {{
public
public static
static void
void main(String
main(String args[])
args[]) {{
System.out.print("Hello
System.out.print("Hello World!");
World!");
}}
}}
Phương
Phương thức
thức System.out.print()
System.out.print() sẽ
sẽ in
in tất
tất cả
cả các
các tham
tham số
số
trong
trong dấu
dấu ngoặc
ngoặc ra
ra màn
màn hình..
hình..
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 15
Ứng dụng kiểu application
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 16
Ứng dụng kiểu application
Có
Có nhiều
nhiều các
các IDE
IDE (môi
(môi trường
trường
phát
phát triển)
triển) như
như NetBeans,
NetBeans,
Eclipse,
Eclipse, JBuilder,
JBuilder, …
… rất
rất mạnh
mạnh
để
để xây
xây dựng
dựng ứng
ứng dụng
dụng Java.
Java.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 17
Cài đặt và cấu hình JDK
Cài đặt
Phiên bản: jdk-6u5-windows-i586-p.exe
Thư mục cài đặt: C:\Program Files\Java\jdk1.6.0_05
Cấu hình
Đặt biến môi trường PATH và CLASSPATH
Vào System Properties / Environment Variables: trong phần
System Variables, thêm tiếp tục vào đường dẫn PATH C:\
Program Files\Java\jdk1.6.0_05\bin;
Click chọn NEW, thêm vào
CLASSPATH = .; [Các thư mục hoạt động khác,
nếu cần]
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 18
Biên dịch và thực thi chương trình
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 19
Cấu trúc điều khiển
Cấu trúc điều khiển trong Java giống hệt như cấu
trúc điều khiển của C++, bao gồm:
Lệnh if-else
Phép toán ? :
Lệnh switch
Lệnh while
Lệnh do – while
Lệnh for
Lệnh break
Lệnh continue
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 20
Một số kỹ thuật
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 21
Một số kỹ thuật
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 22
Một số kỹ thuật
Giá
Giá trị
trị đối
đối số
số của
của chương
chương trình
trình
được
được nhận
nhận vào
vào theo
theo dạng
dạng chuỗi
chuỗi
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 23
Một số kỹ thuật
Đổi
Đổi sốsố thành
thành chuỗi
chuỗi
cộng
cộng 11 chuỗi
chuỗi rỗng
rỗng (“”)
(“”) cho
cho số
số đó.
đó.
Ví
Ví dụ:
dụ:
int
int xx == 15;
15; float
float yy == 3.14;
3.14;
String
String str1
str1 == “”
“” ++ x;
x;
String
String str2
str2 == “”
“” ++ y;
y;
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 24
Một số kỹ thuật
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 25
Một số kỹ thuật
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 26
Cài đặt và sử dụng 1 lớp
Cú
Cú pháp
pháp càicài đặt
đặt 11 lớp
lớp trong
trong
Java
Java gần
gần giống
giống cú
cú pháp
pháp cài
cài
đặt
đặt 11 lớp
lớp trong
trong C++
C++
Không
Không khai
khai báo
báo thuộc
thuộc tính
tính truy
truy
cập
cập thì
thì mặc
mặc nhiên
nhiên là
là public
public
trong
trong cùng
cùng package
package (xem
(xem nhưnhư
trong
trong cùng
cùng thư
thư mục
mục chứa
chứa nó).
nó).
Cú
Cú pháp
pháp tạo
tạo đối
đối tượng:
tượng:
ClassName
ClassName objobj == new
new
ClassName([các
ClassName([các tham
tham số]);
số]);
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 27
Cài đặt và sử dụng 1 lớp
•• Chỉ
Chỉ có
có một
một lớp
lớp được
được khai
khai báo
báo là
là public
public
•• Lớp
Lớp public
public sẽsẽ được
được nhìn
nhìn thấy
thấy (truy
(truy xuất
xuất được)
được)
bởi
bởi các
các lớp
lớp khác
khác ở ở bất
bất kỳ
kỳ ở
ở đâu.
đâu.
•• Lớp
Lớp public
public sẽsẽ chứa
chứa hàm
hàm main().
main().
•• Các
Các lớp
lớp còn
còn lại
lại mặc
mặc nhiên
nhiên làlà package-private,
package-private,
nghĩa
nghĩa là
là có
có thể
thể truy
truy xuất
xuất được
được từtừ các
các lớp
lớp trong
trong
cùng
cùng file
file hay
hay cùng
cùng package
package (thư
(thư mục).
mục).
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 28
Thừa kế trong Java
Một lớp chỉ có thể có một lớp cha (thừa kế đơn).
Dùng từ khóa extends để khai báo thừa kế.
Lớp cha được tham khảo từ lớp con bởi từ khóa super.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 29
Ngoại lệ (Exception) trong Java
Ngoại lệ là các lỗi sinh ra từ các "thao tác không chắc chắn“ như:
Mở 1 file không tồn tại
Nối kết mạng không thực hiện được
Nhập, xuất dữ liệu không đúng định dạng
Java bắt buộc các lệnh có thể dẫn đến các lỗi truy xuất (ngoại lệ)
phải có các đoạn mã xử lý phòng hờ:
try {
[ Các thao tác vào ra có thể sinh ra các ngoại lệ ]
}
catch (KiểuNgoạiLệ01 biến) {
[ Ứng xử khi ngoại lệ KiểuNgoaiLệ01 sinh ra ]
}
catch (KiểuNgoạiLệ02 biến) {
[ Ứng xử khi ngoại lệ KiểuNgoaiLệ02 sinh ra ]
}
finally {
[ Công việc luôn luôn được thực hiện ]
}
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 30
Ngoại lệ (Exception) trong Java
Ví dụ
Chương
Chương trình
trình
không
không cócó phần
phần xử
xử
lý
lý ngoại
ngoại lệ
lệ
nếu
nếu ta
ta không
không nhập
nhập
vào
vào đối
đối số
số dòng
dòng
lệnh
lệnh giá
giá trị
trị nào
nào
nếu
nếu tata nhập
nhập vào
vào
giá
giá trị
trị không
không phải
phải
là
là số
số nguyên
nguyên
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 31
Ngoại lệ (Exception) trong Java
Chương
Chương trình
trình có
có
phần
phần xử
xử lý
lý ngoại
ngoại lệ
lệ
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 32
Ngoại lệ (Exception) trong Java
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 33
Java – Nhập xuất với Stream
Stream
Stream là một dòng liên tục, có thứ tự các bytes dữ liệu
“chảy” giữa chương trình và các thiết bị ngoại vi:
Stream nhập (in): nhận (read) dữ liệu từ thiết bị ngoại vi.
Stream xuất (out): xuất (write) dữ liệu ra thiết bị ngoại vi.
Chương
Chương trình
trình chỉ
chỉ làm
làm việc
việc trên
trên các
các
stream
stream nhập
nhập vàvà stream
stream xuất,
xuất, mà
mà không
không
quan
quan tâm
tâm đến
đến đặc
đặc điểm
điểm riêng
riêng biệt
biệt của
của
Trừu
Trừu tượng
tượng thiết
thiết bị
bị ngoại
ngoại vi
vi nối
nối với
với Stream.
Stream.
hóa
hóa việc
việc
xuất
xuất nhập
nhập
Stream
Stream bao
bao gồm
gồm những
những bytes
bytes rời
rời rạc,
rạc,
không
không có
có định
định dạng
dạng cụ
cụ thể.
thể.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 34
Java – Nhập xuất với Stream
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 35
Java – Nhập xuất với Stream
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 36
Java – Nhập xuất với Stream
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 37
Java – Nhập xuất với Stream
Lớp java.io.InputStream
Các phương thức chính:
public abstract int read() throws IOException: nhận 1 ký tự
public int read(byte b[]) throws IOException: nhận nhiều ký tự
public int read(byte b[], int offset, int len) throws IOException
public int available() throws IOException
public long skip(long n) throws IOException
pubic void close() throws IOException
System.in là một InputStream nối kết với bàn phím.
Nhận các ký tự nhập từ bàn phím.
Thêm 2 ký tự kết thúc là ‘\r’ và ‘\n’ khi nhập xong.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 38
Java – Nhập xuất với Stream
Ví dụ 1 về java.io.InputStream
•• Nhập
Nhập từng
từng ký
ký tự
tự từ
từ bàn
bàn phím.
phím.
•• Hiển
Hiển thị
thị ra
ra màn
màn hình
hình ký
ký tự
tự đó.
đó.
•• Kết
Kết thúc
thúc khi
khi nhập
nhập vào
vào ký
ký tự
tự qq
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 39
Java – Nhập xuất với Stream
Ví dụ 2 về java.io.InputStream
•• Nhập
Nhập 11 chuỗi
chuỗi ký
ký tự
tự từ
từ bàn
bàn phím.
phím.
•• Hiển
Hiển thị
thị ra
ra màn
màn hình
hình chuỗi
chuỗi ký
ký tự
tự đó.
đó.
•• Kết
Kết thúc
thúc khi
khi nhập
nhập vào
vào chuỗi
chuỗi “EXIT”
“EXIT”
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 40
Java – Nhập xuất với Stream
Ví dụ 3 về java.io.InputStream
•• Đọc
Đọc nội
nội dung
dung 11 file
file vào
vào vùng
vùng đệm.
đệm.
•• Hiển
Hiển thị
thị ra
ra màn
màn hình
hình nội
nội dung
dung đó.
đó.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 41
Java – Nhập xuất với Stream
Lớp java.io.OutputStream
Các phương thức chính:
public abstract void write(int b) throws IOException: xuất ra1
ký tự có giá trị là b
public void write(byte b[]) throws IOException: xuất tất cả byte
dữ liệu được lưu trong mảng b[].
public void write(byte b[], int offset, int len) throws IOException
pubic void flush() throws IOException
pubic void close() throws IOException
System.out là một đối tượng thuộc lớp PrintStream (thừa
kế từ OutputStream), nối kết với màn hình.
Cho phép xuất ra màn hình nhiều dạng dữ liệu khác nhau.
Có thể sử dụng các phương thức của OutputStream.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 42
Java – Nhập xuất với Stream
Ví dụ về java.io.OutputStream
Ghi
Ghi 11 file
file với
với các
các dạng
dạng
dữ
dữ liệu
liệu khác
khác nhau
nhau
Nội
Nội dung
dung file
file kết
kết quả
quả
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 43
Java – Nhập xuất với Stream
BufferedReader
BufferedReader br br == new
new BufferedReader(new
BufferedReader(new InputStreamReader(System.in));
InputStreamReader(System.in));
String
String str
str == br.readLine();
br.readLine(); //// Kết
Kết quả
quả nhập
nhập từ
từ bàn
bàn phím
phím sẽ
sẽ lưu
lưu trong
trong chuỗi
chuỗi str.
str.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 44
Java – Nhập xuất với Stream
Xuất ra 1 chuỗi
Cách 1: Sử dụng lớp OutputStream
Chuyển đổi từ chuỗi cần ghi vào mảng byte[].
Ghi mảng byte[] ra stream xuất.
FileOutputStream
FileOutputStream f2 f2 == new
new FileOutputStream("C:/Test2.txt");
FileOutputStream("C:/Test2.txt");
String
String str
str == "Day
"Day la
la chuoi
chuoi thu
thu 11 can
can ghi
ghi vao
vao file
file \r\n";
\r\n";
byte
byte b[]
b[] == str.getBytes();
str.getBytes(); //// Doi
Doi chuoi
chuoi thanh
thanh mang
mang byte[]
byte[]
f2.write(b);
f2.write(b);
f2.close();
f2.close();
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 45
Java – Nhập xuất với Stream
Xuất ra 1 chuỗi
Cách 2: Sử dụng lớp PrintWriter
Dùng các hàm print, println, … để xuất nhiều dạng dữ liệu.
Gọi thêm lệnh flush() để đẩy dữ liệu từ vùng đệm ra ngoài.
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 46
Luồng (Thread)
Khái niệm:
Trong
Trong hệ hệ điều
điều Trong
Trong hệhệ điều
điều
hành
hành cổ cổ điển
điển hành
hành hiện
hiện đại
đại
Đơn
Đơn vịvị sử
sử dụng
dụng Đơn
Đơn vị
vị sử
sử
CPU
CPU là là quá
quá dụng
dụng CPU
CPU làlà
trình
trình (process)
(process) luồng
luồng (thread)
(thread)
Luồng
Luồng cung
cung
cấp
cấp cơ
cơ chế
chế
tính
tính toán
toán và
và
xử
xử lý
lý song
song
song
song trong
trong
Mỗi quá trình có: các
các ứng
ứng dụng.
dụng.
• Thanh ghi bộ đếm chương trình
Mỗi luồng:
• Thanh ghi trạng thái • Có riêng bộ đếm chương trình,
• Ngăn xếp
trạng thái thanh ghi và ngăn xếp.
• Không gian địa chỉ riêng • Chia sẻ không gian địa chỉ
=> Dễ dàng chia sẻ file, hiệu báo
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 47
Luồng (Thread)
sơ
sơ đồ
đồ chuyển
chuyển
trạng
trạng thái
thái của
của
Thread
Thread sử
sử dụng
dụng
trong
trong hệ
hệ điều
điều
hành
hành Sun
Sun Solaris
Solaris
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 48
Luồng (Thread)
Ví dụ: so sánh
thời gian chạy
giữa các giải
thuật sắp xếp
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 49
Luồng (Thread)
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 50
Luồng (Thread)
Ví dụ
Tạo
Tạo rara 33 luồng
luồng
thực
thực thi
thi song
song
song
song việc
việc đếm
đếm số
số
từ
từ 11 đến
đến 50 50
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 51
Luồng (Thread)
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 52
Luồng (Thread)
Thread.MAX_PRIORITY
Thread.MAX_PRIORITY == 1010
Thread.NORM_PRIORITY
Thread.NORM_PRIORITY == 55
Thread.MIN_PRIORITY
Thread.MIN_PRIORITY == 11
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 53
Luồng (Thread)
Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 54