LẬP TRÌNH JAVA

Nguyễn Hữu Thể

JAVA CƠ BẢN

1

java - s¬ l¦îc vÒ ng«n ng÷

 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.

2

Chương trình dịch Java

“Write One, Run Any Where”

3

Chương trình dịch Java

4

Java development kit (JDK)

Bé ph¸t triÓn øng dông java gåm:

 javac: 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

5

Download JDK

6

Download JDK

7

Tool

 Notepad

 NotePad ++

 Netbeans

 Eclipse

8

Tool

 Notepad

 NotePad ++

 Netbeans

 Eclipse

9

Tool

 Eclipse

10

Chương trình Java đầu tiên

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello World!");

}

}

11

Kiểu dữ liệu cơ sở

 Là các dữ liệu được xác định trong ngôn ngữ

12

KiÓu m¶ng

// Long syntax

int[] numbers = new int[5] {20, 1, 42, 15, 34};

// Short syntax

int[] numbers2 = {20, 1, 42, 15, 34};

int[][] numbers = new int[3][3];

int[][] numbers2 = {{2, 3, 2}, {1, 2, 6}, {2, 4, 5}};

13

KiÓu m¶ng

int[] anArray; // declares an array of integers

anArray = new int[10]; //create an array of integers

anArray[0] = 100; // initialize first element

anArray[1] = 200; // initialize second element

anArray[2] = 300; // etc.

 Mảng kiểu chuỗi

String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},

{"Smith", "Jones"}};

String a = names[0][0]

//Mr

String b = names[1][0]); //Smith

14

Giá trị mặc định

 Lỗi hay gặp phải khi lập trình là sử dụng biến chưa khởi tạo  Java hỗ trợ khởi tạo các giá trị mặc định cho các biến.

15

Chuyển đổi kiểu dữ liệu

 Dùng để chuyển từ một kiểu dữ liệu này sang kiểu dữ liệu khác  Có 2 dạng ép kiểu:

 Ép kiểu ngầm định

 Ép kiểu tường minh

16

Chuyển đổi kiểu dữ liệu (2)

17

Ép kiểu ngầm định

 Khi một kiểu dữ liệu được gán cho 1 biến của 1 kiểu khác  tự

động chuyển kiểu

 Điều kiện:

 Hai kiểu phải tương thích

 Kiểu đích phải lớn hơn kiểu nguồn

18

Ép kiểu tường minh

 Khi cần chuyển sang kiểu có độ chính xác cao hơn

19

Định dạng nhập xuất

 Mã định dạng: bất kì một đầu ra được hiển thị trên màn hình cần phải được định dạng

20

Định dạng nhập xuất (2)

 Hàm printf() trong Java được sử dụng để định dạng kiểu dữ liệu

ở console

 Ví dụ:

public static void main(String[] args) {

int i = 10; System.out.printf("gia tri cua i la %d", i);

}

21

Lớp Scanner

 Cho phép người dùng đọc giá trị của một vài kiểu

Scanner scaner = new Scanner(System.in);

Đối tượng InputStream

public static void main(String[] args) { }

 Một số phương thức của Scanner:

22

Dãy Escape

23

Toán tử luận lý

 Các biểu thức có kiểu trả về là boolean, có thể kết hợp lại với

nhau bằng các toán tử luận lý như:

 AND (& hoặc &&)

 OR (| hoặc ||)

 XOR (^)

 NOT (!)

24

Toán tử

25

Toán tử

26

Toán tử

27

Toán tử

28

Các toán tử làm việc với bit

 Phép toán trên bit:

 & , | , ^ , << , >> ,>>>, ~ int a = 60; /* 60 = 0011 1100 */

int b = 13; /* 13 = 0000 1101 */

int c = 0; c = a & b; /* 12 = 0000 1100 */

c = a | b; /* 61 = 0011 1101 */

c = a ^ b; /* 49 = 0011 0001 */

c = ~a; /*-61 = 1100 0011 */

c = a << 2; /* 240 = 1111 0000 */

c = a >> 2; /* 15 = 1111 */

c = a >>> 2; /* 15 = 0000 1111 */

29

Biểu thức & toán tử

 Phép toán trên kiểu chuỗi String:

 Java dùng toán tử + để nối hai chuỗi lại với nhau

System.out.println(name + " is a " + color);

 Độ ưu tiên của các toán tử

30

Tính kết hợp của các phép toán

31

Từ khóa

Từ khóa abstract

Ý nghĩa Dùng để khai báo lớp, hàm trừu tượng.

Được sử dụng để kết thúc vòng lặp hoặc cấu trúc switch.

boolean Kiểu dữ liệu logic

break

Kiểu dữ liệu số nguyên. byte

Được sử dụng trong lệnh switch. case

Kiểu dữ liệu kí tự. char

Được sử dụng trong xử lý ngoại lệ. catch

Dùng để khai báo lớp. class

Khai báo biến theo sau là biến hằng const

continue Được dùng trong vòng lặp để bắt đầu một vòng lặp mới.

default Được sử dụng trong lệnh switch.

do Được sử dụng trong vòng lặp điều kiện sau.

32

Từ khóa (2)

Ý nghĩa

Từ khóa double

Kiểu dữ liệu số thực.

else Khả năng lựa chọn thứ 2 trong câu lệnh If.

extends Chỉ rằng một lớp được kế thừa từ một lớp khác.

Giá trị logic. false

final

Dùng để khai báo hằng số, phương thức không thể ghi đè, hoặc lớp không thể kế thừa.

finally

Phần cuối của khối xử lý ngoại lệ.

Câu lệnh lặp.

Kiểu số thực. float

for

goto Nhảy tới dòng lệnh bất kì đã được đặt nhãn

if Câu lệnh lựa chọn.

implements Chỉ rằng một lớp triển khai từ một giao diện.

import Khai báo sử dụng thư viện.

33

Từ khóa (3)

Từ khóa instance of

Ý nghĩa Kiểm tra một đối tượng có phải là một thể hiện của một lớp hay không.

int Kiểu số nguyên.

interface sử dụng để khai báo giao diện.

Kiểu số nguyên. long

Khai báo phương thức được viết bằng ngôn ngữ C++. native

new Tạo một đối tượng mới.

null Một đối tượng không tồn tại.

package Dùng để khai báo một gói.

private Đặc tả truy xuất.

public Đặc tả truy xuất.

protected Đặc tả truy xuất.

return Trả giá trị về

34

short Kiểu số nguyên.

Từ khóa (4)

Từ khóa static

Ý nghĩa Dùng để khai báo biến, thuộc tính tĩnh.

super Truy xuất đến lớp cha.

switch Lệnh lựa chọn.

synchronized Một phương thức độc quyền truy xuất trên một đối tượng.

this Ám chỉ chính lớp đó.

throw Ném ra ngoại lệ.

throws Khai báo phương thức ném ra ngoại lệ.

true

Giá trị logic.

try Sử dụng để bắt ngoại lệ.

void Dùng để khai báo một phương thức không trả về giá trị.

while Dùng trong cấu trúc lặp.

35

java - ø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

36

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 ý.

37

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.

38

java - cÊu tróc ®iÒu khiÓn

 LÖnh if - else

 PhÐp to¸n ?

 LÖnh switch

 While

 Do - while

 For

 Break

 Continue

 Return

39

LÖnh if - else

if ( condition ) { Task for the true condition; } else { Task for the false condition; }

40

PhÐp to¸n ?

 PhÐp to¸n ?:(condition) ? Operation1 : Operation2; <=> if ( condition == true ) { return value of Operation1; }

else { return value of Operation2 ;}

41

LÖnh switch

switch ( variable ) {

case value1 : { Task 1; break; }

case value2 : { Task 2; break; }

. . .

default: Task n;

}

42

LÖnh switch

43

while

while (condition == true){

The condition is true, so we have to do this task;

}

44

do - while

do {

Do this task until the condition gets false;

} while (condition ==true) ;

45

for

for (khëi t¹o; ®iÒu kiÖn; bưíc t¨ng/gi¶m){

The condition is true, so we do this task;

operation2;

}

46

LÖnh break

 Vßng lÆp sÏ kÕt thóc khi gÆp lÖnh break;

47

LÖnh continue

C¸c lÖnh sau lÖnh continue sÏ bÞ bá qua, mét chu kú lÆp míi

b¾t ®Çu.

48

§æi chuçi thµnh sè

49

Truyền đối số qua dòng lệnh

 Đố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 dòng

lÖnh.

 C¸c ®èi sè chøa trong mét m¶ng kiÓu chuçi (String) : args.

 Sè lưîng ®èi sè chØ ra bëi thuéc tÝnh length cña m¶ng.

50

Try-catch-finally

 Sử dụng khối try, catch, finally để bắt giữ các ngoại lệ

Khối lệnh sẽ thực hiện nếu ngoại lệ xảy ra

Khối lệnh sẽ thực hiện bất chấp ngoại lệ xảy ra hay không

Khối lệnh có thể ném ngoại lệ

51

Chuỗi (String)

 Java hỗ trợ Unicode  mỗi kí tự dài 16 bit  Ví dụ hằng chuỗi

 System.out.println(“Hello world”);

 Ghép chuỗi:

 Dùng các toán tử + và += để ghép chuỗi.

 Ví dụ:

double distance = 45.5; System.out.println("Distance = "+ distance +" miles.");

Distance = 45.5 miles.

Chuỗi

Khai báo và sử dụng kí tự

 char có độ dài 2 bytes và chứa các số nguyên không dấu.  Hằng kí tự được biểu diễn trong dấu nháy đơn (’)  Có thể nhập các kí tự đơn bằng dãy escape sequence \uxxx chỉ

định thứ tự theo thập lục phân.

char c = '\u0a76'; System.out.println("Char = "+ c);

String - Constructor

 public String() ;  public String(String original);  public String(char value[]);  public String(char value[], int offset, int count);  public String(int[] codePoints, int offset, int count);  public String(byte bytes[], int offset, int length, String charsetName);  public String(byte bytes[], int offset, int length, Charset charset); (1.6)  public String(byte bytes[], String charsetName);  public String(byte bytes[], Charset charset); (1.6)  public String(byte bytes[], int offset, int length);  public String(byte bytes[])  public String(StringBuffer buffer);  public String(StringBuilder builder);  public String(byte ascii[], int hibyte, int offset, int count);  public String(byte ascii[], int hibyte);

String

 Ví dụ:

 String s = new String();

 Chú ý:

• Kí tự trong Java là kí tự 16bit, không phải ASCII 8 bit

• Các encoding (charset): các chế độ mã hóa kí tự nền được sử

dụng trong hệ thống để chuyển đổi kí tự ASCII thành Unicode.

– VD: UTF-8, UTF-16, US-ASCII, ISO-8859-1, …

Chiều dài =0

Các phương thức chuỗi String

 Demo:

 Phương thức kiểm tra lớp String

• length(), charAt(), getChars(..), getBytes(…), hashCode()

 Phương thức so sánh lớp String

• equals(…), equalsIgnoreCase(…), compareTo(…), compareToIgnoreCase (…), regionMatches(…), startsWith(…), endWith(…)  Phương thức lập chỉ mục lớp String • indexOf(…), lastIndexOf(…)  Phương thức chuyển đổi lớp String

• substring(…), concat(…), replace(…), toLowerCase(…),

toUpperCase(…), trim(), toCharArray(…), intern()

Các phương thức chuỗi

 Demo

 Tính dung lượng và chiều dài lớp StringBuffer:

• length(), capacity(), ensureCapacity(…), setLength(…)

 Phương thức char của StringBuffer

• charAt(…), getChars(…), setCharAt(…)

 Nối thêm lớp StringBuffer

• append(…)  Xóa, thay thế

• delete(…), replace(…)

 Chuỗi con

• substring(…)

 Chèn lớp

• insert(…)

 Khác

• reverse(), toString(), readObject(…)

Lớp Character

58

Ví dụ

Các kí số Character

 Character rất hữu ích khi: chuyển đổi kí tự thành số nguyên trong

1 cơ số.

char c = 'F'; int digit = Character.digit(c, 16); System.out.println(c + " = "+ digit);

int digit = 12; char c = Character.forDigit(digit, 16); System.out.println(digit + " = " + c);