Top Banner
Lesson Lesson Lesson Lesson 1 1 1- - - Java Java Java Java
102

Lesson 01 -Java

Feb 16, 2016

Download

Documents

hbaocr

java
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lesson 01 -Java

Lesson Lesson Lesson Lesson 1111 ---- JavaJavaJavaJava

Page 2: Lesson 01 -Java

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

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

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

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

JDKJDKJDKJDK

• JDK gồm các thành phần:

– Compiler.

– Debugger.

– Java Runtime Environment (JRE).

Page 7: Lesson 01 -Java

IDEIDEIDEIDE

• Netbeans.

• Eclipse.

• IntelliJ.

• Jbuilder.

• Jcreator.

Page 8: Lesson 01 -Java

IDEIDEIDEIDE

• Trong bài giảng này IDE được sử dụng là Netbeans.

Page 9: Lesson 01 -Java

NetbeansNetbeansNetbeansNetbeans

Page 10: Lesson 01 -Java

Download NetbeansDownload NetbeansDownload NetbeansDownload Netbeans

• Truy cập vào trang https://netbeans.org/

Page 11: Lesson 01 -Java

Download NetbeansDownload NetbeansDownload NetbeansDownload Netbeans

Page 12: Lesson 01 -Java

Cài đặtCài đặtCài đặtCài đặt

Page 13: Lesson 01 -Java

Cài đặtCài đặtCài đặtCài đặt

Page 14: Lesson 01 -Java

Cài đặtCài đặtCài đặtCài đặt

Page 15: Lesson 01 -Java

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

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

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

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

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

Cú phápCú phápCú phápCú pháp

Page 21: Lesson 01 -Java

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

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

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

Toán tửToán tửToán tửToán tử

Page 25: Lesson 01 -Java

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

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

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

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

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

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

HelloWorldHelloWorldHelloWorldHelloWorld

Page 32: Lesson 01 -Java

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

HelloWorldHelloWorldHelloWorldHelloWorld

Page 34: Lesson 01 -Java

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

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

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

CollectionCollectionCollectionCollection

Page 38: Lesson 01 -Java

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

Class hierarchy of CollectionClass hierarchy of CollectionClass hierarchy of CollectionClass hierarchy of Collection

Page 40: Lesson 01 -Java

SummarySummarySummarySummary

Page 41: Lesson 01 -Java

ListListListList

• Các lớp con của List:

– ArrayList

– Vector

– LinkedList

Page 42: Lesson 01 -Java

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

SetSetSetSet

• Các lớp con của set:

– HashSet

– TreeSet

– ....

Page 44: Lesson 01 -Java

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

MapMapMapMap

Page 46: Lesson 01 -Java

MapMapMapMap

• Các lớp con của Map:

– HashTable

– LinkedHashMap

– HashMap

– TreeMap

Page 47: Lesson 01 -Java

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

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

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

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

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

OutputStreamOutputStreamOutputStreamOutputStream

• Một số lớp con của OutputStream:

– FileOutputStream

– FilterOutputStream

– ByteArrayOutputStream

– PipedOutputStream

Page 53: Lesson 01 -Java

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

Console I/OConsole I/OConsole I/OConsole I/O

Page 55: Lesson 01 -Java

Đọ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

Đọ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

Ví dụVí dụVí dụVí dụ

Page 58: Lesson 01 -Java

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

Ví dụVí dụVí dụVí dụ

Page 60: Lesson 01 -Java

Đọ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

Đọ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

Ví dụVí dụVí dụVí dụ

Page 63: Lesson 01 -Java

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

Ví dụVí dụVí dụVí dụ

Page 65: Lesson 01 -Java

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

Ví dụVí dụVí dụVí dụ

Page 67: Lesson 01 -Java

Đọ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

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

ReaderReaderReaderReader

• Một số lớp con của Reader:

– CharArrayReader

– FilterReader

– InputStreamReader

– PipedReader

– StringReader

– FileReader

Page 70: Lesson 01 -Java

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

WriterWriterWriterWriter

• Một số lớp con của Writer:

– CharArrayWriter

– OutputStreamWriter

– PipedWriter

– StringWriter

– PrintWriter

– FileWriter

Page 72: Lesson 01 -Java

Ví dụVí dụVí dụVí dụ

• FileReader

• FileWriter

• InputStreamReader

• OutputStreamWriter

• PrintWriter

• BufferedReader

Page 73: Lesson 01 -Java

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

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

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

Tạo threadTạo threadTạo threadTạo thread

Page 77: Lesson 01 -Java

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

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

Đồ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

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

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

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

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

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

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

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

Đ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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Thực hànhThực hànhThực hànhThực hành