Lesson 01 -Java
description
Transcript of Lesson 01 -Java
![Page 1: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/1.jpg)
Lesson Lesson Lesson Lesson 1111 ---- JavaJavaJavaJava
![Page 2: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/2.jpg)
Nội dungNội dungNội dungNội dung
• Giới thiệu ngôn ngữ lập trình Java.
• Cú pháp
• Các kiểu dữ liệu.
• Lớp và đối tượng cơ bản.
• Thực hành.
![Page 3: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/3.jpg)
Giới thiệu về JavaGiới thiệu về JavaGiới thiệu về JavaGiới thiệu về Java
![Page 4: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/4.jpg)
Giới thiệu ngôn ngữ lập trình Giới thiệu ngôn ngữ lập trình Giới thiệu ngôn ngữ lập trình Giới thiệu ngôn ngữ lập trình JavaJavaJavaJava
• Java là gì ?
– Java là ngôn ngữ lập trình hướng đối tượng do Sun Microsystem đưa ra vào giữa thập niên 90.
• Java là ngôn ngữ lập trình thuần hướng đối tượng.
![Page 5: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/5.jpg)
JDKJDKJDKJDK
• Bộ công cụ dành cho lập trình viên java được gọi là Java Development KitJava Development KitJava Development KitJava Development Kit (JDK).
• Từ version 1.2, bộ toolkit này được đổi tên thành Java 2 Software Developer KitJava 2 Software Developer KitJava 2 Software Developer KitJava 2 Software Developer Kit(J2SDK).
• Phiên bản hiện tại là 1.8.
![Page 6: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/6.jpg)
JDKJDKJDKJDK
• JDK gồm các thành phần:
– Compiler.
– Debugger.
– Java Runtime Environment (JRE).
![Page 7: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/7.jpg)
IDEIDEIDEIDE
• Netbeans.
• Eclipse.
• IntelliJ.
• Jbuilder.
• Jcreator.
![Page 8: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/8.jpg)
IDEIDEIDEIDE
• Trong bài giảng này IDE được sử dụng là Netbeans.
![Page 9: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/9.jpg)
NetbeansNetbeansNetbeansNetbeans
![Page 10: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/10.jpg)
Download NetbeansDownload NetbeansDownload NetbeansDownload Netbeans
• Truy cập vào trang https://netbeans.org/
![Page 11: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/11.jpg)
Download NetbeansDownload NetbeansDownload NetbeansDownload Netbeans
![Page 12: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/12.jpg)
Cài đặtCài đặtCài đặtCài đặt
![Page 13: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/13.jpg)
Cài đặtCài đặtCài đặtCài đặt
![Page 14: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/14.jpg)
Cài đặtCài đặtCài đặtCài đặt
![Page 15: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/15.jpg)
Tạo project java với Tạo project java với Tạo project java với Tạo project java với netbeans netbeans netbeans netbeans
![Page 16: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/16.jpg)
Tạo project java với Tạo project java với Tạo project java với Tạo project java với netbeans netbeans netbeans netbeans
![Page 17: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/17.jpg)
Tạo project java với Tạo project java với Tạo project java với Tạo project java với netbeans netbeans netbeans netbeans
![Page 18: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/18.jpg)
Tạo project java với Tạo project java với Tạo project java với Tạo project java với netbeans netbeans netbeans netbeans
![Page 19: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/19.jpg)
Tạo project java với Tạo project java với Tạo project java với Tạo project java với netbeans netbeans netbeans netbeans
![Page 20: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/20.jpg)
Cú phápCú phápCú phápCú pháp
![Page 21: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/21.jpg)
Các từ khóa trong javaCác từ khóa trong javaCác từ khóa trong javaCác từ khóa trong java
![Page 22: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/22.jpg)
Cách đặt tên biếnCách đặt tên biếnCách đặt tên biếnCách đặt tên biến
• Tên bắt đầu bằng ký tự , ký tự gạch dưới hay kí tự $.
• Tên không được chứa các kí tự khoảng trắng, ký hiệu phép toán.
• Tên không được trùng từ khóa.
• Tên có độ dài bất kì.
• Tên phân biệt hoa thường.
![Page 23: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/23.jpg)
Cách đặt tên classCách đặt tên classCách đặt tên classCách đặt tên class
• Như cách đặt tên biến tuy nhiên tên class chỉ gồm các kí tự.
• Tên class phải trùng với tên file.
![Page 24: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/24.jpg)
Toán tửToán tửToán tửToán tử
![Page 25: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/25.jpg)
Chú thíchChú thíchChú thíchChú thích
• Chú thích trong java giống c++.
// chú thích một dòng
/* chú thích một khối lệnh
....
*/
![Page 26: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/26.jpg)
Các kiểu dữ liệuCác kiểu dữ liệuCác kiểu dữ liệuCác kiểu dữ liệu
![Page 27: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/27.jpg)
Các kiểu dữ liệu cơ bảnCác kiểu dữ liệu cơ bảnCác kiểu dữ liệu cơ bảnCác kiểu dữ liệu cơ bản
• Kiểu số nguyên:
– byte: -128 đến 127.
– short: -215 đến 215 - 1.
– int: -231 đến 231 - 1.
– long: -263 đến 263 - 1.
![Page 28: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/28.jpg)
Các kiểu dữ liệu cơ bảnCác kiểu dữ liệu cơ bảnCác kiểu dữ liệu cơ bảnCác kiểu dữ liệu cơ bản
• Kiểu số thực:
– float: 32 bits.
– double: 64 bits.
• Kiểu kí tự
– char: 16 bits.
• Kiểu lý luận
– boolean
![Page 29: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/29.jpg)
Kiểu chuỗiKiểu chuỗiKiểu chuỗiKiểu chuỗi
• Kiểu chuỗi:
– String: một dãy các kí tự Unicode 16 bits (char).
– Dùng toán tử + để nối chuỗi.
– Phải so sánh bằng phương thức compareTocompareTocompareTocompareTo.
![Page 30: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/30.jpg)
Các kiểu dữ liệu đối tượngCác kiểu dữ liệu đối tượngCác kiểu dữ liệu đối tượngCác kiểu dữ liệu đối tượng
• Array (kiểu mảng).
• Enum (kiểu liệt kê).
• Class.
• Interface.
![Page 31: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/31.jpg)
HelloWorldHelloWorldHelloWorldHelloWorld
![Page 32: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/32.jpg)
Cấu trúc chương trình JavaCấu trúc chương trình JavaCấu trúc chương trình JavaCấu trúc chương trình Java
![Page 33: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/33.jpg)
HelloWorldHelloWorldHelloWorldHelloWorld
![Page 34: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/34.jpg)
Lớp và các đối tượng cơ bảnLớp và các đối tượng cơ bảnLớp và các đối tượng cơ bảnLớp và các đối tượng cơ bản
![Page 35: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/35.jpg)
Lớp MathLớp MathLớp MathLớp Math
• Là một phần của gói java.lang.java.lang.java.lang.java.lang.
• Chứa các phương thức có chức năng tínhtoán về toán học.
• Như:– Lũy thừa (pow)
– Căn (sqrt)
– Trị tuyệt đối (abs)
– ....
![Page 36: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/36.jpg)
Lớp CollectionsLớp CollectionsLớp CollectionsLớp Collections
• Lớp hỗ trợ xử lý các thao tác về mảng.
• Gồm các interface
– Collection
– Set
– List
– Map
![Page 37: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/37.jpg)
CollectionCollectionCollectionCollection
![Page 38: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/38.jpg)
CollectionCollectionCollectionCollection
java.util.Queue java.util.List java.util.Set
Cho phép chứa các phần tử trùng lặp
Cho phép chứa các phần tử trùng lặp
Không cho phép chứa các phần tử trùng lặp
Không cho phép chứa các phần tử null
Cho phép chứa nhiều phần tử null
Tùy theo class thi hành Set hỗ trợ chứa phần tử null hay không. Nếu có hỗ trợ thì chỉ chứa nhiều nhất 1 phần tử null nếu có.
Cho phép chứa nhiều phần tử null
![Page 39: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/39.jpg)
Class hierarchy of CollectionClass hierarchy of CollectionClass hierarchy of CollectionClass hierarchy of Collection
![Page 40: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/40.jpg)
SummarySummarySummarySummary
![Page 41: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/41.jpg)
ListListListList
• Các lớp con của List:
– ArrayList
– Vector
– LinkedList
![Page 42: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/42.jpg)
Các thao tác cơ bản trên Các thao tác cơ bản trên Các thao tác cơ bản trên Các thao tác cơ bản trên listlistlistlist
![Page 43: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/43.jpg)
SetSetSetSet
• Các lớp con của set:
– HashSet
– TreeSet
– ....
![Page 44: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/44.jpg)
Các thao tác cơ bản trên setCác thao tác cơ bản trên setCác thao tác cơ bản trên setCác thao tác cơ bản trên set
![Page 45: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/45.jpg)
MapMapMapMap
![Page 46: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/46.jpg)
MapMapMapMap
• Các lớp con của Map:
– HashTable
– LinkedHashMap
– HashMap
– TreeMap
![Page 47: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/47.jpg)
Các thao tác cơ bản trên Các thao tác cơ bản trên Các thao tác cơ bản trên Các thao tác cơ bản trên mapmapmapmap
![Page 48: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/48.jpg)
Lớp I/OLớp I/OLớp I/OLớp I/O
• Các lớp chính liên quan đến việc xử lý IO đều nằm trong gói java.io.
• Các lớp xử lý IO trong java được chia thành 2 loại chính:
– InputStream và OutputStream xử lý byte, số.
– Reader và Writer xử lý ký tự và text.
![Page 49: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/49.jpg)
InputStreamInputStreamInputStreamInputStream
• InputStream định nghĩa các phương thức sau – int available( )
– void close( )
– void mark(int numBytes)
– boolean markSupported( )
– int read( )
– int read(byte buffer[ ])
– int read(byte buffer[ ], int offset, int numBytes)
– void reset( )
– long skip(long numBytes)
![Page 50: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/50.jpg)
InputStreamInputStreamInputStreamInputStream
• Một số lớp con tiêu biểu của InputStream:
– FileInputStream
– FilterInputStream
– ByteArrayInputStream
– StringBufferInputStream
– SequenceInputStream
– PipedInputStream
– …
![Page 51: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/51.jpg)
OutputStreamOutputStreamOutputStreamOutputStream
• OutputStream định nghĩa các phương thức sau:
– void close( )
– void flush( )
– void write(int b)
– void write(byte buffer[ ], int offset, int numBytes)
– void write(byte buffer[ ])
![Page 52: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/52.jpg)
OutputStreamOutputStreamOutputStreamOutputStream
• Một số lớp con của OutputStream:
– FileOutputStream
– FilterOutputStream
– ByteArrayOutputStream
– PipedOutputStream
![Page 53: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/53.jpg)
Console I/OConsole I/OConsole I/OConsole I/O
• System.in: đọc dữ liệu trực tiếp từ bàn phím.
• System.out: ghi dữ liệu ra console.
• System.err
• Ví dụ: Nhập vào mảng n phần tử và xuất các phần tử ngược lại.
![Page 54: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/54.jpg)
Console I/OConsole I/OConsole I/OConsole I/O
![Page 55: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/55.jpg)
Đọc và ghi file Đọc và ghi file Đọc và ghi file Đọc và ghi file
• Đọc và ghi file dưới dạng byte stream được thực hiện thông qua 2 lớp FileInputStream và FileOutputStream.
![Page 56: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/56.jpg)
Đọc fileĐọc fileĐọc fileĐọc file
• Tạo đối tượng FileInputStream, khởi tạo đối tượng với tên file cần đọc
• Dùng các hàm read() để đọc dữ liệu
• gọi close() để đóng stream lại.
![Page 57: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/57.jpg)
Ví dụVí dụVí dụVí dụ
![Page 58: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/58.jpg)
Ghi fileGhi fileGhi fileGhi file
• Tạo đối tượng FileOutputStream, khởi tạo đối tượng với tên file cần ghi.
• dùng các hàm write() để ghi dữ liệu.
• dùng flush() để đưa dữ liệu còn trong buffer vào file.
• gọi close() để đóng stream lại.
![Page 59: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/59.jpg)
Ví dụVí dụVí dụVí dụ
![Page 60: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/60.jpg)
Đọc và ghi dữ liệu nhị phânĐọc và ghi dữ liệu nhị phânĐọc và ghi dữ liệu nhị phânĐọc và ghi dữ liệu nhị phân
• Giải quyết nhu cầu đọc và ghi dữ liệu dưới dạng số nguyên, số thực, …
• Sử dụng lớp DataInputStream và DataOutputStream.
![Page 61: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/61.jpg)
Đọc fileĐọc fileĐọc fileĐọc file
• Tạo đối tượng FileInputStream, khởi tạo đối tượng với tên file cần đọc.
• Tạo đối tượng DataInputStream với đầu vào là FileInputStream.
• Dùng các hàm read() của lớp DataInputStream để đọc dữ liệu.
• gọi close() để đóng stream.
![Page 62: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/62.jpg)
Ví dụVí dụVí dụVí dụ
![Page 63: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/63.jpg)
Ghi fileGhi fileGhi fileGhi file
• Tạo đối tượng FileOutputStream, khởi tạo đối tượng với tên file cần đọc.
• Tạo đối tượng DataOutputStream với đầu vào là FileOutputStream.
• Dùng các hàm write() của lớp DataInputStream để ghi dữ liệu.
• gọi close() để đóng stream.
![Page 64: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/64.jpg)
Ví dụVí dụVí dụVí dụ
![Page 65: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/65.jpg)
Tập tin truy cập ngẫu nhiênTập tin truy cập ngẫu nhiênTập tin truy cập ngẫu nhiênTập tin truy cập ngẫu nhiên
• Lớp RandomAccessFile dùng để truy cập tập tin ngẫu nhiên.
• Cung cấp phương thức giúp người dùng định vị đến một vị trí của con trỏ file
![Page 66: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/66.jpg)
Ví dụVí dụVí dụVí dụ
![Page 67: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/67.jpg)
Đọc/Ghi dữ liệu sử dụng các Đọc/Ghi dữ liệu sử dụng các Đọc/Ghi dữ liệu sử dụng các Đọc/Ghi dữ liệu sử dụng các character streamcharacter streamcharacter streamcharacter stream
• Để xử lý việc đọc ghi dữ liệu dưới dạng ký tự hoặc text, ta nên sử dụng các lớp đọc ghi dựa trên ký tự do Java cung cấp.
• Các character stream làm việc với dữ liệu Unicode
• Các character stream gồm: bộ đọc và bộ ghi.
![Page 68: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/68.jpg)
ReaderReaderReaderReader
• Reader định nghĩa các phương thức sau: – void mark(int numChars) – boolean markSupported( ) – int read( ) – int read(char buffer[ ]) – abstract int read(char buffer[ ], int offset, int
numChars)– int read(CharBuffer buffer) – boolean ready( ) – void reset( ) – long skip(long numChars)
![Page 69: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/69.jpg)
ReaderReaderReaderReader
• Một số lớp con của Reader:
– CharArrayReader
– FilterReader
– InputStreamReader
– PipedReader
– StringReader
– FileReader
![Page 70: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/70.jpg)
WriterWriterWriterWriter
• Writer định nghĩa các phương thức sau:– Writer append(char ch)
– Writer append(CharSequence chars)
– Writer append(CharSequence chars, int begin, int end)
– void write(String str, int offset, int numChars)
– void write(int ch)
– void write(char buffer[ ])
– void write(String str)
![Page 71: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/71.jpg)
WriterWriterWriterWriter
• Một số lớp con của Writer:
– CharArrayWriter
– OutputStreamWriter
– PipedWriter
– StringWriter
– PrintWriter
– FileWriter
![Page 72: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/72.jpg)
Ví dụVí dụVí dụVí dụ
• FileReader
• FileWriter
• InputStreamReader
• OutputStreamWriter
• PrintWriter
• BufferedReader
![Page 73: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/73.jpg)
Lớp ThreadLớp ThreadLớp ThreadLớp Thread
• Dùng để lập trình đa luồng (multithread).
• Nằm trong gói java.lang
![Page 74: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/74.jpg)
Lớp ThreadLớp ThreadLớp ThreadLớp Thread
• Một thread có thể có các trạng thái
– Running
– Suspended
– Blocked
![Page 75: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/75.jpg)
Tạo threadTạo threadTạo threadTạo thread
• Có 2 cách
– Kế thừa lớp Thread
– Implement interface RunnableRunnableRunnableRunnable
![Page 76: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/76.jpg)
Tạo threadTạo threadTạo threadTạo thread
![Page 77: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/77.jpg)
Làm việc với ThreadLàm việc với ThreadLàm việc với ThreadLàm việc với Thread
• Lập trình một ứng dụng multi thread tương tác với biến n với các yêu cầu sau:
– Thread 1: nếu n < 10000 thì cộng n thêm 1 và xuất ra chữ up.
– Thread 2: nếu n > 0 thì giảm n đi 1 và xuất ra chữ down.
![Page 78: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/78.jpg)
Làm việc với ThreadLàm việc với ThreadLàm việc với ThreadLàm việc với Thread
![Page 79: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/79.jpg)
Đồng bộ hóaĐồng bộ hóaĐồng bộ hóaĐồng bộ hóa
• Sử dụng phương thức Synchronized.
• Monitor trên đối tượng.
![Page 80: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/80.jpg)
Sử dụng phương thức Sử dụng phương thức Sử dụng phương thức Sử dụng phương thức SynchronizedSynchronizedSynchronizedSynchronized
• Khi một thread đang thực hiện phương thức có từ khóa synchronized đi kèm, các thread khác muốn thực hiện phương thức này của cùng đối tượng sẽ phải chờ.
![Page 81: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/81.jpg)
Sử dụng phương thức Sử dụng phương thức Sử dụng phương thức Sử dụng phương thức SynchronizedSynchronizedSynchronizedSynchronized
![Page 82: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/82.jpg)
Monitor trên đối tượngMonitor trên đối tượngMonitor trên đối tượngMonitor trên đối tượng
• Để đảm bảo chỉ một thread được truy xuất vào đối tượng tại một thời điểm, ta có thể sử dụng lệnh synchronized đối với đối tượng đó.
![Page 83: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/83.jpg)
Monitor trên đối tượngMonitor trên đối tượngMonitor trên đối tượngMonitor trên đối tượng
![Page 84: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/84.jpg)
Giao tiếp giữa các threadGiao tiếp giữa các threadGiao tiếp giữa các threadGiao tiếp giữa các thread
• Java cung cấp các phương thức sau để hỗ trợ việc giao tiếp giữa các thread
– Wait
– Notify
– NotifyAll
![Page 85: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/85.jpg)
Giao tiếp giữa các threadGiao tiếp giữa các threadGiao tiếp giữa các threadGiao tiếp giữa các thread
• Wait : yêu cầu thread hiện thời rời bỏ monitor và tạm dừng họat động
• Notify : đánh thức thread đầu tiên gọi wait trên đối tượng
• NotifyAll : đánh thức tất cả các thread gọi wait trên đối tượng
![Page 86: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/86.jpg)
Giao tiếp giữa các threadGiao tiếp giữa các threadGiao tiếp giữa các threadGiao tiếp giữa các thread
![Page 87: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/87.jpg)
Điều khiển threadĐiều khiển threadĐiều khiển threadĐiều khiển thread
• Suspend : tạm dừng thực thi thread
• Resume : kích hoạt lại thread đang tạm dừng
• Stop : chấm dứt hoạt động của thread
• Chú ý: các lệnh trên đã bị hủy trong phiên bản Java 1.6
![Page 88: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/88.jpg)
Lớp NetLớp NetLớp NetLớp Net
• Dùng để lập trình mạng.
• Nằm trong gói java.net.
![Page 89: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/89.jpg)
Lớp NetLớp NetLớp NetLớp Net
• Http– URL
– URLConnection
• Các lớp dùng cho giao thức TCP– Socket
– ServerSocket
• Các lớp dùng cho giao thức UDP– DatagramPacket
– DatagramSocket
– MulticastSocket
![Page 90: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/90.jpg)
TCP TCP TCP TCP ---- SocketSocketSocketSocket
• Socket là đầu nối trên kết nối 2 chiều giữa 2 ứng dụng trên hệ thống mạng
![Page 91: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/91.jpg)
TCP TCP TCP TCP ---- ServerSocketServerSocketServerSocketServerSocket
• ServerSocket lắng nghe trên 1 port để chờ các ứng dụng kết nối tới.
• Khi có client kết nối tới, server đồng ý sẽ tạo ra 1 Socket kết nối với socket của client.
• Server và Client có thể đọc/ghi trên đường liên kết vừa tạo ra.
![Page 92: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/92.jpg)
TCP TCP TCP TCP ---- SocketSocketSocketSocket
• Làm việc trên socket
– Mở .
– Mở inputstream để đọc và outputstream để ghi xuống socket.
– Đọc và ghi dữ liệu từ các stream
– Đóng các stream
– Đóng socket.
![Page 93: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/93.jpg)
Làm việc với TCP Làm việc với TCP Làm việc với TCP Làm việc với TCP ---- SocketSocketSocketSocket
• Lập trình chương trình sử dụng tcp socket với các yêu cầu sau:
– Server: lắng nghe và chấp nhận connect. Đọc một dòng và thêm vào chữ hello sau đó trả lại client.
– Client: Nhận một chuỗi từ console sau đó gửi lên server, sau đó nhận lại chuỗi trả về.
![Page 94: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/94.jpg)
Làm việc với Làm việc với Làm việc với Làm việc với TCP TCP TCP TCP ---- SocketSocketSocketSocket
![Page 95: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/95.jpg)
Làm việc với Làm việc với Làm việc với Làm việc với TCP TCP TCP TCP ---- SocketSocketSocketSocket
![Page 96: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/96.jpg)
Làm việc với TCP Làm việc với TCP Làm việc với TCP Làm việc với TCP ---- SocketSocketSocketSocket
ServerClient
![Page 97: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/97.jpg)
UDP UDP UDP UDP ---- DatagramDatagramDatagramDatagram
• Datagram là một thông điệp được gởi ra mạng.
• Sử dụng giao thức UDP
• Không đảm bảo : nội dung, thời gian nhận.
![Page 98: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/98.jpg)
Làm việc với UDP Làm việc với UDP Làm việc với UDP Làm việc với UDP ----DatagramDatagramDatagramDatagram
• Lập trình chương trình sử dụng UDP để thực hiện các yêu cầu sau:
– Listener: Lắng nghe các gói tin và xuất dữ liệu trong gói tin dưới dạng chuỗi.
– Sender: Liên tục gửi một chuỗi.
![Page 99: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/99.jpg)
Làm việc với UDP Làm việc với UDP Làm việc với UDP Làm việc với UDP ----DatagramDatagramDatagramDatagram
![Page 100: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/100.jpg)
Làm việc với UDP Làm việc với UDP Làm việc với UDP Làm việc với UDP ----DatagramDatagramDatagramDatagram
![Page 101: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/101.jpg)
Làm việc với UDP Làm việc với UDP Làm việc với UDP Làm việc với UDP ----DatagramDatagramDatagramDatagram
![Page 102: Lesson 01 -Java](https://reader034.fdocument.pub/reader034/viewer/2022051020/5695d05e1a28ab9b0292329a/html5/thumbnails/102.jpg)
Thực hànhThực hànhThực hànhThực hành