SlideShare a Scribd company logo
1 of 65
Sơ lược về ngôn ngữ Java
CHƯƠNG II
http://cyber24h.com
Nội dung
 Giới thiệu về Java
 Cơ bản về ngôn ngữ Java
 Chương trình ứng dụng kiểu Application
 Vào /Ra cơ bản
 Các cấu trúc điều khiển
 Ngoại lệ (Exception)
 Một số vấn đề liên quan đến lớp (class)
 Nhập / Xuất với các Stream
 Luồng (Thread)
http://cyber24h.com
Giới thiệu về Java
 Lịch sử phát triển:
 1990: Ngôn ngữ Oak được tạo ra bởi James Gosling trong dự án
Green của Sun MicroSystems nhằm phát triển phần mềm cho các
thiết bị dân dụng.
 1995: Oak đổi tên thành Java.
 1996: trở thành chuẩn công nghiệp cho Internet.
 Khả năng:
 Ngôn ngữ cấp cao
 Giao diện lập trình đồ họa: Symantec Cafe, Jbuilder, Netbeans …
 Truy cập cơ sở dữ liệu (JDBC).
 Lập trình mạng.
 Lập trình phân tán.
 Đặc điểm:
 Ngôn ngữ hướng đối tượng, Đa nền, Đa luồng,
 Ngôn ngữ mã nguồn động, an toàn, đơn giản.
http://cyber24h.com
Giới thiệu về Java
 Hai kiểu ứng dụng dưới Java:
 Applet:
• Ứng dụng được nhúng vào
các trang web.
• Mã ứng dụng được lấy từ
web server.
 Application:
• Ứng dụng được thực thi trên
các máy ảo Java.
• Bộ thông dịch dịch mã
bytecode của ứng dụng
thành mã máy đích.
http://cyber24h.com
Java Development Kit (JDK)
 Bộ phát triển ứng dụng java gồm:
• javac: Chương trình biên dịch ngôn ngữ java thành mã byte
code
• java (máy ảo java – Java Virtual Machine): Thông dịch mã
bytecode của các chương trình kiểu application thành mã thực thi
của máy đích.
• appletviewer: Bộ thông dịch thực thi applet.
• javadoc: Tạo tài liệu tự động.
• jdb: Gở rối.
• rmic: Tạo stub cho ứng dụng kiểu RMI.
• rmiregistry: Phục vụ tên (Name Server) trong hệ thống RMI
. . .
http://cyber24h.com
Các kiểu dữ liệu
 Kiểu số:
 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ó các phương thức thao tác trên chuỗi.
 Kiểu Boolean : nhận 2 giá trị true / false
Tên kiểu Kích thước
byte
short
int
long
float
double
1 byte
2 bytes
4 bytes
8 bytes
4 bytes
8 bytes
http://cyber24h.com
Các kiểu dữ liệu
 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 mảng:
int i = a[0]; float f = yt[9];
String str = names[20]; int x = matran[0][0];
http://cyber24h.com
Các phép toán
 Phép toán số học:
+, - , *, / , % , =
++ , -- , += , - = , *= , /= , %=
 Phép toán logic:
= =, !=, && , ||, !
> , < , >= , <=
 Phép toán trên bit:
& , | , ^ , << , >> , ~
 Phép toán điều kiện: ? :
 Phép toán chuyển kiểu: (kiểu mới)
Các phép toán có ý nghĩa tương tự ngôn ngữ C++
http://cyber24h.com
Quy ước đặ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, inTen(), inDiaChi(),
getInputStream(),...
http://cyber24h.com
Ứng dụng kiểu Application(1)
 Java ngôn ngữ thuần đối tượng (pure object):
=> Tất cả đều được định nghĩa trong các lớp (class)
 Trong một ứng dụng có một lớp thực thi được.
Lớp thực thi được:
• Có tên lớp trùng với tên tập tin chứa nó.
• Phải khai báo public
• Có chứa phương thức:
public static void main (String argv[]){
. . .
}
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.
http://cyber24h.com
Ứng dụng kiểu Application (2)
 Ví dụ ứng dụng HelloWorld:
 Định nghĩa trong lớp HelloWorld
 Chứa trong tập tin HelloWorld.java
Chú giải: System.out.print() : in ra màn hình
http://cyber24h.com
Ứng dụng kiểu Application (3)
 Cài đặt bộ phát triển ứng dụng JDK:
 Version 1.1.6 trở lên
 Thư mục c:jdk1.1.6
 Đặt đường dẫn đến thư mục bin của jdk:
set path = c:jdk1.1.6bin
 Đặt biến môi trường CLASSPATH đến thư viện của jdk và thư
mục chứa các lớp cần thực hiện:
set CLASSPATH = c:jdk1.1.6lib;
 Biên dịch tập tin nguồn:
javac HelloWorld.java
Kết quả : HelloWorld.class
 Thực thi lớp HelloWorld.class:
java HelloWorld
Kết quả Hello World!
http://cyber24h.com
Ứng dụng kiểu Application (4)
http://cyber24h.com
Một vài ví dụ (1)
 In ra màn hình:
 Sử dụng phương thức System.out.print(arg1 + arg2+ ...+argn);
 arg1, arg2, argn: các tham số có kiểu tùy ý.
http://cyber24h.com
Một vài ví dụ (2)
 Đọc ký tự từ bàn phím:
 Sử dụng phương thức int System.in.read();
 Giá trị trả về là thứ tự trong bảng mã ascii của các ký tự nhận từ
bàn phím.
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh if - else:
if ( điều kiện ) { Công việc nếu điều kiện là Đúng; }
else {Công việc nếu điều kiện là Sai; }
http://cyber24h.com
Các cấu trúc điều khiển
 Phép toán ?: (điềukiện) ? Hành động1 : Hành động2;
<=> if ( điềukiện == true ) { Trả lại giá trị là Hành động1; }
else { Trả lại giá trị là Hành động2 ;}
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh switch :
switch ( biến ) {
case giá_trị1 : { Hành động1; break; }
case giá_trị2 : { Hành động 2; break; }
. . .
default: Hành động n;
}
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh while:
while (điềukiện == true) {
công việc;
}
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh do-while:
do {
công việc;
} while (điềukiện == true)
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh for:
for(biểu thức1;biểu thức2 ; biểu thức 3) {
công việc;
}
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh break:
Vòng lặp sẽ kết thúc khi gặp lệnh break
http://cyber24h.com
Các cấu trúc điều khiển
 Lệnh continue:
Vòng lặp sẽ bỏ qua không thực hiện các lệnh sau lệnh continue
để bắt đầu lần lặp kế tiếp
http://cyber24h.com
Một số kỹ thuật (1)
 Đọc đối số của chương trình
 Các đối số đưa vào chương trình cách nhau khoảng trắng trên
hàng lệnh
 Các đối số chứa trong một mảng kiểu chuỗi (String).
 Số lượng đối số chỉ ra bởi thuộc tính length của mảng.
http://cyber24h.com
Một số kỹ thuật (2)
 Đổi chuỗi thành số
http://cyber24h.com
Ngoại lệ (Exception) (1)
 Khái niệm
 Các thao tác vào / ra thường không chắc chắn: nhập sai kiểu
dữ liệu, máy in chưa sẵn sàng, kết nối mạng không thực hiện
được,… gây ra các lỗi khi thực thi chương trình
 Java hạn chế các lỗi này bằng cơ chế Ngoại lệ (exception)
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 }
http://cyber24h.com
Ngoại lệ (Exception) (2)
 Ví dụ Kiểu ngoại lệ của trường hợp
lỗi xử lý phần tử ngoài mảng
http://cyber24h.com
Một số vấn đề liên quan đến lớp
 Định nghĩa lớp
class TênLớp {
// Khai báo các thuộc tính (Attributes)
KiểuDữLiệu1 thuộctính1, thuộctính2, . .;
KiểuDữLiệu1 thuộctính3, thuộctính4, . .;
// Khai báo (định nghĩa) các phương thức (Methods)
TênLớp([KiểuDữLiệu thamsố, KiểuDữLiệu thamsố]) {
// Phương thức tạo dựng (constructor)
...
}
void phươngthức1() {
. . .
}
KiểuDữLiệu phươngthức2( …) {
… return giátrị;
}
}
http://cyber24h.com
Một số vấn đề liên quan đến lớp
 Khai báo đối tượng
TênLớp tênĐốitượng = new TênLớp([đốisố1,đốisố2, . . .]);
http://cyber24h.com
Một số vấn đề liên quan đến lớp
 Nhiều lớp trong một tập tin
 Chỉ có một lớp được khai báo public
 Các lớp còn lại mặc định là public trong package chứa lớp đó
http://cyber24h.com
Một số vấn đề liên quan đến lớp
 Tính thừa kế
 Một lớp chỉ có thể có một lớp cha (thừa kế đơn)
 Lớp cha được tham khảo từ lớp con bởi từ khóa super
 Cú pháp: class TênLớp extends LớpCha {
…..
}
http://cyber24h.com
Một số vấn đề liên quan đến lớp
 Tính thừa kế (tiếp theo)
 Các hình thức kế thừa trong java
http://cyber24h.com
Một số vấn đề liên quan đến lớp
 Tính thừa kế (tiếp theo)
 Đa kế thừa không được hỗ trợ trong java
 Tính thừa kế (tiếp theo)
 Đa kế thừa không được hỗ trợ trong java
http://cyber24h.com
Một số vấn đề liên quan đến lớp
TẠI SAO JAVA KHÔNG HỖ TRỢ ĐA KẾ THỪA ?
http://cyber24h.com
Một số vấn đề liên quan đến lớp
Hãy suy xét kịch bản sau: Có 3 lớp A, B, C. Trong đó lớp C kế thừa
từ các lớp A và B. Nếu các lớp A và B có phương thức giống nhau
và bạn gọi nó từ đối tượng của lớp con, như vậy khó có thể xác
đinh được việc gọi phương thức của lớp A hay B.
Như vậy, đa kế thừa không được
hỗ trợ để giảm thiểu sự phức tạp
của ngôn ngữ
http://cyber24h.com
Interface trong Java
 Khái niệm
 Một Interface trong Java là một bản thiết kế của một lớp. Nó
chỉ có các phương thức trừu tượng..
 Interface là một kỹ thuật để thu được tính trừu tượng hoàn
toàn và đa kế thừa trong Java.
 Một Interface trong Java là một tập hợp các phương thức trừu
tượng (abstract). Một class triển khai một interface, do đó kế
thừa các phương thức abstract của interface.
 Mặc định các trường của Interface là public, static và final, các
phương thức là public và abstract.
http://cyber24h.com
Interface trong Java
 Đa kế thừa trong Java bởi Interface
 Nếu một lớp triển khai đa kế thừa, hoặc một Interface kế thừa
từ nhiều Interface thì đó là đa kế thừa
http://cyber24h.com
Interface trong Java
 Đa kế thừa trong Java bởi Interface (tiếp theo)
 Hãy xem xét ví dụ sau
http://cyber24h.com
Một số vấn đề liên quan đến lớp
Đa kế thừa không được hỗ trợ thông qua lớp trong Java nhưng là
có thể bởi Interface, tại sao?
http://cyber24h.com
Một số vấn đề liên quan đến lớp
Vì Interface không có tính lưỡng nghĩa khi trình triển khai được
cung cấp bởi lớp Implementation
Trong ví dụ trên, trình triển khai không phải là Interface mà là lớp
Implement của nó
http://cyber24h.com
Nhập / Xuất với các Stream (1)
 Khái niệm Stream
 Là khái niệm trừu tượng => giảm bớt các thao tác vào ra phức
tạp đối với người lập trình => có thể nối kết nhiều loại thiết bị
ngoại vi với CT.
 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.
 Thao tác viết (write): chương trình sẽ gửi dữ liệu vào Stream.
 Thao tác đọc (read): chương trình sẽ nhận dữ liệu từ Stream.
 Java hỗ trợ hai lớp Stream cơ bản trong gói java.io
• java.io.InputStream: Stream nhận dữ liệu (Stream Nhập).
• java.io.OutputStream: Stream gửi dữ liệu (Stream Xuất).
• Dữ liệu không được định dạng: từng ký tự (char) hoặc nhiều
byte (byte[]).
 Các lớp con của hai lớp trên định dạng dữ liệu nhận và dữ liệu
gửi: DataInputStream, DataOutputStream, FileInputStream,
FileOutputStream ...
http://cyber24h.com
Nhập / Xuất với các Stream (2)
 InputStream – Một số phương thức
 int read() throws IOException:
• Return : 0-255: Giá trị của byte nhận được từ ngoại vi
-1 : Stream đã kết thúc.
 int read (byte b[]) throws IOException:
• Đọc tất cả các byte hiện có trong Stream đặt vào mảng b
• Return: Số lượng byte đọc được
-1: Stream đã kết thúc.
 int read (byte b[], int offset, int len)
• Đọc len byte từ Stream hiện tại, lưu vào trong mảng b bắt
đầu từ vị trí offset
• Return: Số lượng byte đọc được
-1: Stream đã kết thúc.
 Các phương thức trên nghẽn (block) cho đến khi có dữ liệu
hoặc kết thúc Stream hay một ngoại lệ xuất hiện.
 int available(): Trả về số lượng byte hiện có trong Stream mà
không nghẽn.
http://cyber24h.com
Nhập / Xuất với các Stream (3)
 InputStream – Ví dụ 1
IOException: Kiểu các ngoại
lệ xảy ra khi nhập / xuất
http://cyber24h.com
Nhập / Xuất với các Stream (4)
 InputStream – Ví dụ 2
http://cyber24h.com
Nhập / Xuất với các Stream (5)
 OutputStream - Một số phương thức:
 void write (int b) throws IOException:
• Viết byte b vào Stream hiện tại.
• Return : void
 void write (int b[]) throws IOException:
• Viết b.length bytes trong mảng b vào Stream hiện tại
• Return : void
 void write (int b[], int offset, int len) throws IOException:
• Viết len bytes trong mảng b vào Stream hiện tại, bắt đầu
từ phần tử có chỉ số offset trong mảng.
• Return : void
http://cyber24h.com
Nhập / Xuất với các Stream (6)
 OutputStream – Ví dụ:
getBytes(): Phương
thức của đối tượng
String. Đọc dữ liệu
theo từng byte
http://cyber24h.com
Nhập / Xuất với các Stream (7)
 Nhập chuỗi từ Stream nhập (1):
 InputStream: là Stream nhập gồm mảng các bytes.
 InputStreamReader: Chuyển Stream nhập dạng byte sang
Stream nhập dạng các ký tự.
 BufferedReader: Hỗ trợ việc đọc văn bản từ một Stream nhập
dạng ký tự, lớp này thích hợp cho việc đọc các dòng văn bản.
 Phương thức String readLine() throws IOException của
BufferedReader:
• Đọc dòng văn bản kế tiếp trong Stream nhập. Một dòng
kết thúc bởi cặp ký tự ‘r’’n’ hoặc kết thúc Stream.
• Return: Một chuỗi ký tự hoặc null.
 Cách đọc một chuỗi từ một InputStream:
InputStream is = new InputStream();
BufferedReader br = new BufferedReader (new InputStreamReader(is));
String str = br.readLine();
http://cyber24h.com
Nhập / Xuất với các Stream (8)
 Nhập chuỗi từ Stream nhập (2):
http://cyber24h.com
Nhập / Xuất với các Stream (9)
 Gửi chuỗi ra Stream xuất – lớp PrintWriter:
 Khởi tạo: PrintWriter(OutputStream out);
 Gửi một chuỗi: void write(String str);
 Gửi một dòng: void println(String line);
 Đẩy dữ liệu ra Stream: void flush();
 Cách thức sử dụng:
OutputStream os = new OutputStream();
PrintWriter pw = new PrintWriter(os);
String str = “Day la mot dongrn”;
pw.write(str);
String line = “Day la mot dong”;
pw.println(line);
pw.flush();
http://cyber24h.com
Nhập / Xuất với các Stream (10)
 Gửi chuỗi ra Stream xuất – Ví dụ:
http://cyber24h.com
Luồng (Thread)
 Hệ điều hành đa nhiệm cổ điển:
 Đơn vị cơ bản sử dụng CPU là quá trình.
 Mỗi quá trình có một không gian địa chỉ và một không gian
trạng thái riêng
 Hệ điều hành đa nhiệm hiện đại, hỗ trợ luồng:
 Đơn vị cơ bản sử dụng CPU là luồng.
 Mỗi quá trình có một không gian địa chỉ và nhiều luồng điều
khiển.
 Mỗi luồng có bộ đếm chương trình, trạng thái các thanh ghi và
ngăn xếp riêng.
 Luồng của một quá trình có thể chia sẻ nhau không gian địa
chỉ : Biến toàn cục, tập tin, chương trình con, hiệu báo, . . .
 Luồng chia sẻ thời gian sử dụng CPU => Luồng cũng có các
trạng thái: Sẵn sàng (ready), Đang chạy (running),
Nghẽn(Block) như quá trình.
 Luồng cung cấp cơ chế tính toán song song trong các ứng
dụng.
http://cyber24h.com
Luồng (Thread)
http://cyber24h.com
Luồng (Thread)
 Ví dụ: So sánh thời gian chạy của các giải thuật sắp xếp
http://cyber24h.com
Luồng (Thread)
 Luồng trong java là một đối tượng của lớp java.lang.Thread
 Một chương trình cài đặt luồng bằng cách tạo ra các lớp con của
lớp Thread.
 Lớp Thread có 3 phương thức cơ bản:
• public static synchronized void start() :
 Chuẩn bị mọi thứ cần thiết để thực hiện luồng.
• public void run():
 Chứa mã lệnh thực hiện công việc thực sự của luồng.
 run() được gọi một cách tự động bởi start().
• public void stop() : kết thúc một luồng.
 Luồng kết thúc khi:
• Hoặc tất cả các lệnh trong run() đã được thực thi.
• Hoặc phương thức stop() của luồng được gọi.
http://cyber24h.com
Luồng (Thread)
 Ví dụ
http://cyber24h.com
Luồng (Thread)
 Giữa các luồng trong cùng một quá trình có thể gán độ ưu tiên
thực thi khác nhau (từ 1 – 10), có sẵn 3 mức chuẩn
• MAX_PRIORITY (giá trị 10)
• MIN_PRIORITY (giá trị 01)
• NORM_PRIORITY (giá trị 05)
 Các luồng trong cùng một quá trình chia sẻ nhau không gian địa.
chỉ của quá trình (Ví dụ như cùng truy xuất đến một biến hoặc
một phương thức có thể gây sai lệch dữ liệu) => Cần có cơ chế
đồng bộ hóa (Synchronized).
 Java sử dụng cơ chế biến khóa để đồng bộ hóa giữa các luồng.
 Có hai cấp đồng bộ hóa:
• Giữa các phương thức trong cùng một đối tượng.
• Giữa các đối tượng của cùng một lớp.
http://cyber24h.com
Các kỹ thuật lập trình với luồng
 Tạo luồng
 Khai báo lớp kế thừa từ Thread
 Viết chồng (Override) phương thức run
 Ví dụ:
http://cyber24h.com
Các kỹ thuật lập trình với luồng
 Tạo luồng
 Tạo các đối tượng từ lớp kế thừa và thi hành (start())
 Ví dụ:
Dịch: javac –d . ThreadX.java
javac –d . Main.java
Chạy: java DaLuong.Main
http://cyber24h.com
Các kỹ thuật lập trình với luồng
 Độ ưu tiên của luồng
 Thiết lập độ ưu tiên
void setPriority(int doUT)
doUT: Từ 1 đến 10
 Lấy độ ưu tiên
int getPriority()
 Ví dụ:
http://cyber24h.com
Các kỹ thuật lập trình với luồng
 Độ ưu tiên của luồng
http://cyber24h.com
Các kỹ thuật lập trình với luồng
 Vòng đời của 1 luồng
http://cyber24h.com
Các kỹ thuật lập trình với luồng
 Vòng đời của 1 luồng
http://cyber24h.com
Một số ví dụ về Thread
 Ví dụ 1: Tạo một lớp gồm 2 Thread. Mỗi Thread thực thi trong 2
giây (2000 ms), quá trình này lặp đi lặp lại
 Thực hiện
- Tạo lớp Luong1
- Viết hàm tạo dựng cho lớp Luong1, tạo và gọi 2 Thread thực thi
public Luong1{
new Thread1().start();
new Thread2().start();
}
- Viết class Thread1 và Thread2
class Thread1{
- Viết nội dung cho phương thức run
public void run(){
- Đưa công việc vào vòng lặp, xử lý ngoại lệ
while(true){
try{System.out.println(“Thread 1”);sleep(2000);}
catch(InterruptException e){}
- Viết phương thức main tạo đối tượng Luong1
new Luong1();
http://cyber24h.com
Một số ví dụ về Thread
 Ví dụ 2: Tạo lớp gồm 2 Thread. Thread thứ nhất tạo một số ngẫu
nhiên. Thread thứ 2 nhận số nguyên và tính bình phương của nó
 Thực hiện: Tương tự ví dụ 1
- Để tạo số ngẫu nhiên
+ Khai báo import java.util.Random;
+ Khai báo đối tượng số ngẫu nhiên: Random so=new Random()
- Để tính lũy thừa: Dùng hàm Math.pow(n,csm)
* Lưu ý: Do Thread sẽ truy xuất vào biến chưa số ngẫu nhiên nên
để tránh xung đột nên dùng cơ chế đồng bộ cho đối tượng Thread
khi gán.
synchronized (this) {
i = so.nextInt(30);
…………………
}
Sơ lược về Java

More Related Content

Similar to Sơ lược về Java

OOP in Java - Ver1.1
OOP in Java -  Ver1.1OOP in Java -  Ver1.1
OOP in Java - Ver1.1vdlinh08
 
LTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.pptLTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.pptssuserf603dc1
 
Buffer overflow(bao cao)
Buffer overflow(bao cao)Buffer overflow(bao cao)
Buffer overflow(bao cao)phanleson
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xZendVN
 
DoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdfDoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdfTamDo58
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#Hihi Hung
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#LanLT2011
 
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]leduyk11
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#LanLT2011
 
Core java 3
Core java 3Core java 3
Core java 3. .
 
Học lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trình
Học lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trìnhHọc lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trình
Học lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trìnhCodeGym Đà Nẵng
 
Python moi
Python moiPython moi
Python moiDÉp LÊ
 

Similar to Sơ lược về Java (20)

OOP in Java - Ver1.1
OOP in Java -  Ver1.1OOP in Java -  Ver1.1
OOP in Java - Ver1.1
 
[Cntt] all java
[Cntt] all java[Cntt] all java
[Cntt] all java
 
LTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.pptLTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.ppt
 
Java Tieng Viet
Java Tieng VietJava Tieng Viet
Java Tieng Viet
 
Buffer overflow(bao cao)
Buffer overflow(bao cao)Buffer overflow(bao cao)
Buffer overflow(bao cao)
 
C fast food
C fast foodC fast food
C fast food
 
C# coban
C# cobanC# coban
C# coban
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
 
DoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdfDoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdf
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
C# cơ bản hay
C# cơ bản hayC# cơ bản hay
C# cơ bản hay
 
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Core java 3
Core java 3Core java 3
Core java 3
 
Học lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trình
Học lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trìnhHọc lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trình
Học lập trình cơ bản - Giới thiệu các thuật ngữ trong lập trình
 
Python moi
Python moiPython moi
Python moi
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 

Recently uploaded

sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 

Recently uploaded (20)

sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 

Sơ lược về Java

  • 1. Sơ lược về ngôn ngữ Java CHƯƠNG II
  • 2. http://cyber24h.com Nội dung  Giới thiệu về Java  Cơ bản về ngôn ngữ Java  Chương trình ứng dụng kiểu Application  Vào /Ra cơ bản  Các cấu trúc điều khiển  Ngoại lệ (Exception)  Một số vấn đề liên quan đến lớp (class)  Nhập / Xuất với các Stream  Luồng (Thread)
  • 3. http://cyber24h.com Giới thiệu về Java  Lịch sử phát triển:  1990: Ngôn ngữ Oak được tạo ra bởi James Gosling trong dự án Green của Sun MicroSystems nhằm phát triển phần mềm cho các thiết bị dân dụng.  1995: Oak đổi tên thành Java.  1996: trở thành chuẩn công nghiệp cho Internet.  Khả năng:  Ngôn ngữ cấp cao  Giao diện lập trình đồ họa: Symantec Cafe, Jbuilder, Netbeans …  Truy cập cơ sở dữ liệu (JDBC).  Lập trình mạng.  Lập trình phân tán.  Đặc điểm:  Ngôn ngữ hướng đối tượng, Đa nền, Đa luồng,  Ngôn ngữ mã nguồn động, an toàn, đơn giản.
  • 4. http://cyber24h.com Giới thiệu về Java  Hai kiểu ứng dụng dưới Java:  Applet: • Ứng dụng được nhúng vào các trang web. • Mã ứng dụng được lấy từ web server.  Application: • Ứng dụng được thực thi trên các máy ảo Java. • Bộ thông dịch dịch mã bytecode của ứng dụng thành mã máy đích.
  • 5. http://cyber24h.com Java Development Kit (JDK)  Bộ phát triển ứng dụng java gồm: • javac: Chương trình biên dịch ngôn ngữ java thành mã byte code • java (máy ảo java – Java Virtual Machine): Thông dịch mã bytecode của các chương trình kiểu application thành mã thực thi của máy đích. • appletviewer: Bộ thông dịch thực thi applet. • javadoc: Tạo tài liệu tự động. • jdb: Gở rối. • rmic: Tạo stub cho ứng dụng kiểu RMI. • rmiregistry: Phục vụ tên (Name Server) trong hệ thống RMI . . .
  • 6. http://cyber24h.com Các kiểu dữ liệu  Kiểu số:  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ó các phương thức thao tác trên chuỗi.  Kiểu Boolean : nhận 2 giá trị true / false Tên kiểu Kích thước byte short int long float double 1 byte 2 bytes 4 bytes 8 bytes 4 bytes 8 bytes
  • 7. http://cyber24h.com Các kiểu dữ liệu  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 mảng: int i = a[0]; float f = yt[9]; String str = names[20]; int x = matran[0][0];
  • 8. http://cyber24h.com Các phép toán  Phép toán số học: +, - , *, / , % , = ++ , -- , += , - = , *= , /= , %=  Phép toán logic: = =, !=, && , ||, ! > , < , >= , <=  Phép toán trên bit: & , | , ^ , << , >> , ~  Phép toán điều kiện: ? :  Phép toán chuyển kiểu: (kiểu mới) Các phép toán có ý nghĩa tương tự ngôn ngữ C++
  • 9. http://cyber24h.com Quy ước đặ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, inTen(), inDiaChi(), getInputStream(),...
  • 10. http://cyber24h.com Ứng dụng kiểu Application(1)  Java ngôn ngữ thuần đối tượng (pure object): => Tất cả đều được định nghĩa trong các lớp (class)  Trong một ứng dụng có một lớp thực thi được. Lớp thực thi được: • Có tên lớp trùng với tên tập tin chứa nó. • Phải khai báo public • Có chứa phương thức: public static void main (String argv[]){ . . . } 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.
  • 11. http://cyber24h.com Ứng dụng kiểu Application (2)  Ví dụ ứng dụng HelloWorld:  Định nghĩa trong lớp HelloWorld  Chứa trong tập tin HelloWorld.java Chú giải: System.out.print() : in ra màn hình
  • 12. http://cyber24h.com Ứng dụng kiểu Application (3)  Cài đặt bộ phát triển ứng dụng JDK:  Version 1.1.6 trở lên  Thư mục c:jdk1.1.6  Đặt đường dẫn đến thư mục bin của jdk: set path = c:jdk1.1.6bin  Đặt biến môi trường CLASSPATH đến thư viện của jdk và thư mục chứa các lớp cần thực hiện: set CLASSPATH = c:jdk1.1.6lib;  Biên dịch tập tin nguồn: javac HelloWorld.java Kết quả : HelloWorld.class  Thực thi lớp HelloWorld.class: java HelloWorld Kết quả Hello World!
  • 14. http://cyber24h.com Một vài ví dụ (1)  In ra màn hình:  Sử dụng phương thức System.out.print(arg1 + arg2+ ...+argn);  arg1, arg2, argn: các tham số có kiểu tùy ý.
  • 15. http://cyber24h.com Một vài ví dụ (2)  Đọc ký tự từ bàn phím:  Sử dụng phương thức int System.in.read();  Giá trị trả về là thứ tự trong bảng mã ascii của các ký tự nhận từ bàn phím.
  • 16. http://cyber24h.com Các cấu trúc điều khiển  Lệnh if - else: if ( điều kiện ) { Công việc nếu điều kiện là Đúng; } else {Công việc nếu điều kiện là Sai; }
  • 17. http://cyber24h.com Các cấu trúc điều khiển  Phép toán ?: (điềukiện) ? Hành động1 : Hành động2; <=> if ( điềukiện == true ) { Trả lại giá trị là Hành động1; } else { Trả lại giá trị là Hành động2 ;}
  • 18. http://cyber24h.com Các cấu trúc điều khiển  Lệnh switch : switch ( biến ) { case giá_trị1 : { Hành động1; break; } case giá_trị2 : { Hành động 2; break; } . . . default: Hành động n; }
  • 19. http://cyber24h.com Các cấu trúc điều khiển  Lệnh while: while (điềukiện == true) { công việc; }
  • 20. http://cyber24h.com Các cấu trúc điều khiển  Lệnh do-while: do { công việc; } while (điềukiện == true)
  • 21. http://cyber24h.com Các cấu trúc điều khiển  Lệnh for: for(biểu thức1;biểu thức2 ; biểu thức 3) { công việc; }
  • 22. http://cyber24h.com Các cấu trúc điều khiển  Lệnh break: Vòng lặp sẽ kết thúc khi gặp lệnh break
  • 23. http://cyber24h.com Các cấu trúc điều khiển  Lệnh continue: Vòng lặp sẽ bỏ qua không thực hiện các lệnh sau lệnh continue để bắt đầu lần lặp kế tiếp
  • 24. http://cyber24h.com Một số kỹ thuật (1)  Đọc đối số của chương trình  Các đối số đưa vào chương trình cách nhau khoảng trắng trên hàng lệnh  Các đối số chứa trong một mảng kiểu chuỗi (String).  Số lượng đối số chỉ ra bởi thuộc tính length của mảng.
  • 25. http://cyber24h.com Một số kỹ thuật (2)  Đổi chuỗi thành số
  • 26. http://cyber24h.com Ngoại lệ (Exception) (1)  Khái niệm  Các thao tác vào / ra thường không chắc chắn: nhập sai kiểu dữ liệu, máy in chưa sẵn sàng, kết nối mạng không thực hiện được,… gây ra các lỗi khi thực thi chương trình  Java hạn chế các lỗi này bằng cơ chế Ngoại lệ (exception) 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 }
  • 27. http://cyber24h.com Ngoại lệ (Exception) (2)  Ví dụ Kiểu ngoại lệ của trường hợp lỗi xử lý phần tử ngoài mảng
  • 28. http://cyber24h.com Một số vấn đề liên quan đến lớp  Định nghĩa lớp class TênLớp { // Khai báo các thuộc tính (Attributes) KiểuDữLiệu1 thuộctính1, thuộctính2, . .; KiểuDữLiệu1 thuộctính3, thuộctính4, . .; // Khai báo (định nghĩa) các phương thức (Methods) TênLớp([KiểuDữLiệu thamsố, KiểuDữLiệu thamsố]) { // Phương thức tạo dựng (constructor) ... } void phươngthức1() { . . . } KiểuDữLiệu phươngthức2( …) { … return giátrị; } }
  • 29. http://cyber24h.com Một số vấn đề liên quan đến lớp  Khai báo đối tượng TênLớp tênĐốitượng = new TênLớp([đốisố1,đốisố2, . . .]);
  • 30. http://cyber24h.com Một số vấn đề liên quan đến lớp  Nhiều lớp trong một tập tin  Chỉ có một lớp được khai báo public  Các lớp còn lại mặc định là public trong package chứa lớp đó
  • 31. http://cyber24h.com Một số vấn đề liên quan đến lớp  Tính thừa kế  Một lớp chỉ có thể có một lớp cha (thừa kế đơn)  Lớp cha được tham khảo từ lớp con bởi từ khóa super  Cú pháp: class TênLớp extends LớpCha { ….. }
  • 32. http://cyber24h.com Một số vấn đề liên quan đến lớp  Tính thừa kế (tiếp theo)  Các hình thức kế thừa trong java
  • 33. http://cyber24h.com Một số vấn đề liên quan đến lớp  Tính thừa kế (tiếp theo)  Đa kế thừa không được hỗ trợ trong java  Tính thừa kế (tiếp theo)  Đa kế thừa không được hỗ trợ trong java
  • 34. http://cyber24h.com Một số vấn đề liên quan đến lớp TẠI SAO JAVA KHÔNG HỖ TRỢ ĐA KẾ THỪA ?
  • 35. http://cyber24h.com Một số vấn đề liên quan đến lớp Hãy suy xét kịch bản sau: Có 3 lớp A, B, C. Trong đó lớp C kế thừa từ các lớp A và B. Nếu các lớp A và B có phương thức giống nhau và bạn gọi nó từ đối tượng của lớp con, như vậy khó có thể xác đinh được việc gọi phương thức của lớp A hay B. Như vậy, đa kế thừa không được hỗ trợ để giảm thiểu sự phức tạp của ngôn ngữ
  • 36. http://cyber24h.com Interface trong Java  Khái niệm  Một Interface trong Java là một bản thiết kế của một lớp. Nó chỉ có các phương thức trừu tượng..  Interface là một kỹ thuật để thu được tính trừu tượng hoàn toàn và đa kế thừa trong Java.  Một Interface trong Java là một tập hợp các phương thức trừu tượng (abstract). Một class triển khai một interface, do đó kế thừa các phương thức abstract của interface.  Mặc định các trường của Interface là public, static và final, các phương thức là public và abstract.
  • 37. http://cyber24h.com Interface trong Java  Đa kế thừa trong Java bởi Interface  Nếu một lớp triển khai đa kế thừa, hoặc một Interface kế thừa từ nhiều Interface thì đó là đa kế thừa
  • 38. http://cyber24h.com Interface trong Java  Đa kế thừa trong Java bởi Interface (tiếp theo)  Hãy xem xét ví dụ sau
  • 39. http://cyber24h.com Một số vấn đề liên quan đến lớp Đa kế thừa không được hỗ trợ thông qua lớp trong Java nhưng là có thể bởi Interface, tại sao?
  • 40. http://cyber24h.com Một số vấn đề liên quan đến lớp Vì Interface không có tính lưỡng nghĩa khi trình triển khai được cung cấp bởi lớp Implementation Trong ví dụ trên, trình triển khai không phải là Interface mà là lớp Implement của nó
  • 41. http://cyber24h.com Nhập / Xuất với các Stream (1)  Khái niệm Stream  Là khái niệm trừu tượng => giảm bớt các thao tác vào ra phức tạp đối với người lập trình => có thể nối kết nhiều loại thiết bị ngoại vi với CT.  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.  Thao tác viết (write): chương trình sẽ gửi dữ liệu vào Stream.  Thao tác đọc (read): chương trình sẽ nhận dữ liệu từ Stream.  Java hỗ trợ hai lớp Stream cơ bản trong gói java.io • java.io.InputStream: Stream nhận dữ liệu (Stream Nhập). • java.io.OutputStream: Stream gửi dữ liệu (Stream Xuất). • Dữ liệu không được định dạng: từng ký tự (char) hoặc nhiều byte (byte[]).  Các lớp con của hai lớp trên định dạng dữ liệu nhận và dữ liệu gửi: DataInputStream, DataOutputStream, FileInputStream, FileOutputStream ...
  • 42. http://cyber24h.com Nhập / Xuất với các Stream (2)  InputStream – Một số phương thức  int read() throws IOException: • Return : 0-255: Giá trị của byte nhận được từ ngoại vi -1 : Stream đã kết thúc.  int read (byte b[]) throws IOException: • Đọc tất cả các byte hiện có trong Stream đặt vào mảng b • Return: Số lượng byte đọc được -1: Stream đã kết thúc.  int read (byte b[], int offset, int len) • Đọc len byte từ Stream hiện tại, lưu vào trong mảng b bắt đầu từ vị trí offset • Return: Số lượng byte đọc được -1: Stream đã kết thúc.  Các phương thức trên nghẽn (block) cho đến khi có dữ liệu hoặc kết thúc Stream hay một ngoại lệ xuất hiện.  int available(): Trả về số lượng byte hiện có trong Stream mà không nghẽn.
  • 43. http://cyber24h.com Nhập / Xuất với các Stream (3)  InputStream – Ví dụ 1 IOException: Kiểu các ngoại lệ xảy ra khi nhập / xuất
  • 44. http://cyber24h.com Nhập / Xuất với các Stream (4)  InputStream – Ví dụ 2
  • 45. http://cyber24h.com Nhập / Xuất với các Stream (5)  OutputStream - Một số phương thức:  void write (int b) throws IOException: • Viết byte b vào Stream hiện tại. • Return : void  void write (int b[]) throws IOException: • Viết b.length bytes trong mảng b vào Stream hiện tại • Return : void  void write (int b[], int offset, int len) throws IOException: • Viết len bytes trong mảng b vào Stream hiện tại, bắt đầu từ phần tử có chỉ số offset trong mảng. • Return : void
  • 46. http://cyber24h.com Nhập / Xuất với các Stream (6)  OutputStream – Ví dụ: getBytes(): Phương thức của đối tượng String. Đọc dữ liệu theo từng byte
  • 47. http://cyber24h.com Nhập / Xuất với các Stream (7)  Nhập chuỗi từ Stream nhập (1):  InputStream: là Stream nhập gồm mảng các bytes.  InputStreamReader: Chuyển Stream nhập dạng byte sang Stream nhập dạng các ký tự.  BufferedReader: Hỗ trợ việc đọc văn bản từ một Stream nhập dạng ký tự, lớp này thích hợp cho việc đọc các dòng văn bản.  Phương thức String readLine() throws IOException của BufferedReader: • Đọc dòng văn bản kế tiếp trong Stream nhập. Một dòng kết thúc bởi cặp ký tự ‘r’’n’ hoặc kết thúc Stream. • Return: Một chuỗi ký tự hoặc null.  Cách đọc một chuỗi từ một InputStream: InputStream is = new InputStream(); BufferedReader br = new BufferedReader (new InputStreamReader(is)); String str = br.readLine();
  • 48. http://cyber24h.com Nhập / Xuất với các Stream (8)  Nhập chuỗi từ Stream nhập (2):
  • 49. http://cyber24h.com Nhập / Xuất với các Stream (9)  Gửi chuỗi ra Stream xuất – lớp PrintWriter:  Khởi tạo: PrintWriter(OutputStream out);  Gửi một chuỗi: void write(String str);  Gửi một dòng: void println(String line);  Đẩy dữ liệu ra Stream: void flush();  Cách thức sử dụng: OutputStream os = new OutputStream(); PrintWriter pw = new PrintWriter(os); String str = “Day la mot dongrn”; pw.write(str); String line = “Day la mot dong”; pw.println(line); pw.flush();
  • 50. http://cyber24h.com Nhập / Xuất với các Stream (10)  Gửi chuỗi ra Stream xuất – Ví dụ:
  • 51. http://cyber24h.com Luồng (Thread)  Hệ điều hành đa nhiệm cổ điển:  Đơn vị cơ bản sử dụng CPU là quá trình.  Mỗi quá trình có một không gian địa chỉ và một không gian trạng thái riêng  Hệ điều hành đa nhiệm hiện đại, hỗ trợ luồng:  Đơn vị cơ bản sử dụng CPU là luồng.  Mỗi quá trình có một không gian địa chỉ và nhiều luồng điều khiển.  Mỗi luồng có bộ đếm chương trình, trạng thái các thanh ghi và ngăn xếp riêng.  Luồng của một quá trình có thể chia sẻ nhau không gian địa chỉ : Biến toàn cục, tập tin, chương trình con, hiệu báo, . . .  Luồng chia sẻ thời gian sử dụng CPU => Luồng cũng có các trạng thái: Sẵn sàng (ready), Đang chạy (running), Nghẽn(Block) như quá trình.  Luồng cung cấp cơ chế tính toán song song trong các ứng dụng.
  • 53. http://cyber24h.com Luồng (Thread)  Ví dụ: So sánh thời gian chạy của các giải thuật sắp xếp
  • 54. http://cyber24h.com Luồng (Thread)  Luồng trong java là một đối tượng của lớp java.lang.Thread  Một chương trình cài đặt luồng bằng cách tạo ra các lớp con của lớp Thread.  Lớp Thread có 3 phương thức cơ bản: • public static synchronized void start() :  Chuẩn bị mọi thứ cần thiết để thực hiện luồng. • public void run():  Chứa mã lệnh thực hiện công việc thực sự của luồng.  run() được gọi một cách tự động bởi start(). • public void stop() : kết thúc một luồng.  Luồng kết thúc khi: • Hoặc tất cả các lệnh trong run() đã được thực thi. • Hoặc phương thức stop() của luồng được gọi.
  • 56. http://cyber24h.com Luồng (Thread)  Giữa các luồng trong cùng một quá trình có thể gán độ ưu tiên thực thi khác nhau (từ 1 – 10), có sẵn 3 mức chuẩn • MAX_PRIORITY (giá trị 10) • MIN_PRIORITY (giá trị 01) • NORM_PRIORITY (giá trị 05)  Các luồng trong cùng một quá trình chia sẻ nhau không gian địa. chỉ của quá trình (Ví dụ như cùng truy xuất đến một biến hoặc một phương thức có thể gây sai lệch dữ liệu) => Cần có cơ chế đồng bộ hóa (Synchronized).  Java sử dụng cơ chế biến khóa để đồng bộ hóa giữa các luồng.  Có hai cấp đồng bộ hóa: • Giữa các phương thức trong cùng một đối tượng. • Giữa các đối tượng của cùng một lớp.
  • 57. http://cyber24h.com Các kỹ thuật lập trình với luồng  Tạo luồng  Khai báo lớp kế thừa từ Thread  Viết chồng (Override) phương thức run  Ví dụ:
  • 58. http://cyber24h.com Các kỹ thuật lập trình với luồng  Tạo luồng  Tạo các đối tượng từ lớp kế thừa và thi hành (start())  Ví dụ: Dịch: javac –d . ThreadX.java javac –d . Main.java Chạy: java DaLuong.Main
  • 59. http://cyber24h.com Các kỹ thuật lập trình với luồng  Độ ưu tiên của luồng  Thiết lập độ ưu tiên void setPriority(int doUT) doUT: Từ 1 đến 10  Lấy độ ưu tiên int getPriority()  Ví dụ:
  • 60. http://cyber24h.com Các kỹ thuật lập trình với luồng  Độ ưu tiên của luồng
  • 61. http://cyber24h.com Các kỹ thuật lập trình với luồng  Vòng đời của 1 luồng
  • 62. http://cyber24h.com Các kỹ thuật lập trình với luồng  Vòng đời của 1 luồng
  • 63. http://cyber24h.com Một số ví dụ về Thread  Ví dụ 1: Tạo một lớp gồm 2 Thread. Mỗi Thread thực thi trong 2 giây (2000 ms), quá trình này lặp đi lặp lại  Thực hiện - Tạo lớp Luong1 - Viết hàm tạo dựng cho lớp Luong1, tạo và gọi 2 Thread thực thi public Luong1{ new Thread1().start(); new Thread2().start(); } - Viết class Thread1 và Thread2 class Thread1{ - Viết nội dung cho phương thức run public void run(){ - Đưa công việc vào vòng lặp, xử lý ngoại lệ while(true){ try{System.out.println(“Thread 1”);sleep(2000);} catch(InterruptException e){} - Viết phương thức main tạo đối tượng Luong1 new Luong1();
  • 64. http://cyber24h.com Một số ví dụ về Thread  Ví dụ 2: Tạo lớp gồm 2 Thread. Thread thứ nhất tạo một số ngẫu nhiên. Thread thứ 2 nhận số nguyên và tính bình phương của nó  Thực hiện: Tương tự ví dụ 1 - Để tạo số ngẫu nhiên + Khai báo import java.util.Random; + Khai báo đối tượng số ngẫu nhiên: Random so=new Random() - Để tính lũy thừa: Dùng hàm Math.pow(n,csm) * Lưu ý: Do Thread sẽ truy xuất vào biến chưa số ngẫu nhiên nên để tránh xung đột nên dùng cơ chế đồng bộ cho đối tượng Thread khi gán. synchronized (this) { i = so.nextInt(30); ………………… }