L P TRÌNH JAVA C B N L P TRÌNH JAVA C B N

Ơ Ả Ơ Ả

Ậ Ậ

Ch

ng 2 ươ NGÔN NG L P TRÌNH Ữ Ậ JAVA

Lê Tân B môn: L p trình máy tính

N i dung ch

ng 2

ươ

ng trình Java ươ ổ ị

ng trình d ch ị ươ

ủ ể

 T ng quan v Java  D ch và th c thi ch ự  Công c l p trình và ch ụ ậ  Cú pháp và ng nghĩa  Các ki u d li u nguyên th y  L p và đ i t  Khai báo và nh p xu t d li u

ữ ữ ệ ố ượ ớ

2/39

ấ ữ ệ ng ậ

2.1 2.1 T ng quan v Java

 Java là ngôn ng l p trình h

ữ ậ ố ượ ướ

ng đ i t ư ư

ng (nh C++) do Sun Microsystem đ a ra vào đ u th p niên 90 c a th k 20. ế ỷ ủ ầ ậ

 Ch ấ

t b ng Java có th ch y trên ươ ế ằ ể

ng trình vi ệ ố ả

3/39

ạ b t kỳ h th ng nào có cài máy o Java (JVM - Java Virtual Machine).

2.1 2.1 T ng quan v Java

 Máy o Java (JVM - Java Virtual Machine):

t b ng Java s đ

ng trình vi

c biên d ch

• M t ch ộ

ẽ ượ

ế ằ ra mã c a máy o Java (mã java bytecode).

ươ ủ

• Máy o Java chuy n mã java bytecode thành mã máy

ả ng ng. ứ

t ươ

ệ ệ ề

• Sun Microsystem ch u trách nhi m phát tri n các máy o Java ch y trên các h đi u hành trên các ki n trúc CPU khác nhau.

ế

4/39

2.1 2.1 T ng quan v Java

 Thông d ch:

c Ch ng trình ngu n *.java đ ị ồ

ị ươ ậ

ị  Đ c l p n n: ng trình vi ị ộ ậ ượ biên d ch thành t p tin *.class. Trình thông d ch thông d ch thành mã máy. ề M t ch ộ

t b ng ế ằ ề ạ

H ng đ i t

ng trong ộ

5/39

ng hoàn toàn. ng đ i t ươ ngôn ng Java có th ch y trên nhi u máy ể tính có h đi u hành khác nhau ng: ố ượ C++ nh ng Java là m t ngôn ướ ữ ệ ề  H ng đ i t ướ ố ượ Java t ng t ự ươ ng l p trình h ữ ậ ướ ư ố ượ

2.1 2.1 T ng quan v Java

Java cho phép nhi u ề ệ

 Đa nhi m - đa lu ng: ạ

ng tác ươ ể

ng trình vi t b ng Java có ế ằ ươ

c trên b t kỳ máy tính, h đi u ả ể ạ ệ ề ấ

ồ ti n trình có th ch y song song và t ế v i nhau. ớ ể Ch  Kh chuy n: th ch y đ ượ hành nào có máy o Java. ả

ỗ ợ ạ ệ ể ứ ạ ể

 H tr m nh cho vi c phát tri n ng d ng: ệ Công ngh Java phát tri n m nh nh Sun Microsystem cung c p nhi u công c , th ư ấ vi n l p trình phong phú

ờ ụ ề

6/39

ệ ậ

Các ng d ng Java ụ

2.1 2.1 T ng quan v Java

ấ ở

ng d ng Console: ng d ng nh p xu t Ứ

ng t

ng d ng Applet: ng d ng có th nhúng và ch y

ụ ả ươ ụ

ể ệ

ch đ ế ộ ậ màn hình Console c a MS-DOS. Ứ ạ ủ

ệ c gi

ồ ọ

ượ

ẽ ố ớ

Ứ văn b n t Ứ trong trang web c a m t trình duy t web. ng d ng Desktop dùng giao di n đ h a: Phát ồ ọ Ứ tri n các ng d ng đ h a đ i quy t b ng ế ằ ứ ể th vi n AWT và JFC. ư ệ ng d ng Web: Java h tr m nh m đ i v i vi c ỗ ợ ạ ụ Ứ phát tri n các ng d ng Web thông qua công ngh ệ ể J2EE (Java 2 Enterprise Edition). Ứ h tr phát tri n các ph n m m nhúng.

ng d ng nhúng: Java Sun đ a ra công ngh J2ME ỗ ợ

ư ề

7/39

ng trình Java

ươ

 Vi

2.2 2.2 D ch và th c thi ch

ng trình

i v i file ế ạ t mã ngu n: ồ Dùng m t ch ể ế

ươ ộ t mã ngu n, l u l ư ạ ớ ồ ả ặ ủ

so n th o đ vi ả tên có đuôi “.java”. Tên c a file ph i đ t gi ng tên c a l p chính trong ch ố ủ ớ

 Biên d ch ra mã máy o: d ch javac đ biên d ch mã ngu n “.java” ị ể thành mã c a máy o (java bytecode) có ả ủ đuôi “.class”

ng trình. ươ ả Dùng trình biên ồ ị

 Thông d ch và th c thi: th c thi dùng l nh “java”.

Vi c thông d ch và ự ị ệ ị

8/39

ự ệ

ng trình Java

ươ

 Ví d minh h a: T o ch

2.2 2.2 D ch và th c thi ch

ươ ạ ồ ọ

ng trình ngu n ng trình xu t dòng HelloWorld ra Console*/ ụ ươ

/*Ch package ch01; import java.util.*; class HelloWorldApp{

public static void main(String[] args){

//Xuat dong chu “HelloWorld” System.out.println(“HelloWorld”);

}

i v i tên HelloWorldApp.java trong th ư

}  L u l ư ạ ớ m c ch01 ụ

9/39

ng trình Java

ươ

2.2 2.2 D ch và th c thi ch

ươ

ầ ế

ớ ử ụ

ng trình.  Dòng đ u tiên khai báo gói ch a ch  Dòng ti p theo khai báo n p các l p s d ng.  Khai báo l p ớ HelloWordApp ph m vi toàn c c ụ ng th c main() là đi m b t đ u th c thi  Ph ể

ạ ắ ầ

m t ng d ng.

ứ ụ

ươ ộ ứ ờ

 L i chú thích: Ngôn ng Java h tr ba ki u chú ữ

ỗ ợ

t chú thích trên nhi u dòng

ự ộ

ắ ầ

ế

10/39

 D u ch m ph y “;” đ k t thúc m t l nh.

thích sau: • /* text */: Vi ế • // text: Vi t chú thích trên m t dòng ế • /** documentation */: T đ ng phát sinh tài li u.  D u “{“ và “}”: b t đ u và k t thúc m t kh i ố ấ l nh.ệ ấ

ộ ệ

ể ế

ng trình d ch 2.3 Công c l p trình và ch ụ ậ ươ ị

ậ ầ

 J2SE: Download J2SE và cài đ t lên máy ặ ng d n PATH h ệ ậ ườ ị ứ

ng trình d ch

Dùng công c JCreator tính, c n c p nh t đ ẫ th ng đ n th m c ch a ch ươ ư ụ ế ố c a ngôn ng java ữ ủ t mã ngu n java:  Vi ồ ế

11/39

ụ LE v 5.0 c a hãng XINOX Software. ủ

ng trình d ch 2.3 Công c l p trình và ch ụ ậ ươ ị

ỗ ạ ộ ự

ướ ọ

 B c 2-T o m t l p m i tên HelloWorldApp

ọ ọ

 B c 1-T o m t d án r ng (Empty Project): Ch n menu File \ New \ Project. Ch n Empty project → Next. Nh p tên project, ch n ậ Finish. ướ

ạ ộ ớ

i: Ch n File \ New \ ư ọ

 B c 3-So n th o mã ngu n: C a s ổ

ớ và đ a vào Project hi n t ệ ạ Class. Nh p tên l p là HelloWorldApp và ậ ch n Finish. ạ ọ ướ ử ồ

12/39

ạ ả ổ ồ

ả WorkSpace - C a s so n th o mã ngu n. ử D ch: B m F7. Th c thi: B m F5 ự ấ ấ ị

2.4 Cú pháp và ng nghĩa

 Cú pháp: t p các lu t xác đ nh chính xác ậ ữ ố

ữ ủ

d ng đ n gi n, xác

ượ

ơ

t ế ở ạ ọ

 Ng nghĩa: t p các lu t xác đ nh ý nghĩa các ậ

ậ cách k t h p c a các ch cái, các ch s , và ế ợ các ký hi u.ệ • Các lu t cú pháp đ

c vi đ nh ngôn ng hình th c, g i là siêu ngôn ng ữ ứ (metalanguage). ữ l nh vi ệ

13/39

t trong m t ngôn ng l p trình. ị ữ ậ ế ộ

2.4 Cú pháp và ng nghĩa  Tên – đ nh danh (Identifier): do ng

i dùng ị ườ

đ tặ • Là chu i các ch cái, ch s , d u g ch d

i (

ữ ố ấ

ướ

• Tên ph i b t đ u b i m t ch cái, d u g ch

ỗ ấ ả ắ ầ

_ ), và d u dollar ($). ở

d

ướ ộ

ữ i ( _ ), ho c d u dollar ($) ấ ể

ộ ừ

khóa, không th ể

• Tên có th có đ dài b t kỳ.

ộ  Tên → tham chi u m t l p, m t ph ế

ươ

ặ • M t tên không th là m t t là true, false, ho c ặ null. ấ ộ ớ ế

14/39

ộ ườ ặ ộ ng (bi n ho c h ng), ho c m t ằ ng ặ ộ

th c, m t tr ứ gói

2.4 Cú pháp và ng nghĩa

 Các t

15/39

ừ khoá c a Java ủ

2.5 Các ki u d li u nguyên th y ủ ữ ệ  Là các ki u d li u có hi u l c m t cách t ự

ệ ự ữ ệ ể ộ

16/39

đ ng ộ

2.5 Các ki u d li u nguyên th y ữ ệ c và mi n giá tr  Kích th ị ề

17/39

ướ

2.5 Các ki u d li u nguyên th y ữ ệ byte, short, int, long. M c đ nh là  Ki u s nguyên: ố

 L u ý đ i v i các phép toán trên s nguyên:

ố ố ớ

ể long → k t qu ki u ế

ả ể

ể int. ư • N u hai toán h ng ki u

ế long. ộ

ả long thì đ

chuy n thành

• N u hai toán h ng đ u không ph i ki u

ế

ớ ể int.

c chuy n

• M t trong hai toán h ng không ph i c ượ ạ c khi th c hi n phép toán. long tr ệ ướ ả ể long thì ầ ạ phép tính s th c hi n v i ki u ệ ẽ ự • Các toán h ng ki u ạ

ẽ ượ

sang ki u ể int tr

18/39

• Không th chuy n bi n ki u

ể byte, short s đ c khi th c hi n phép toán. ự ệ ể int và ki u ể boolean

ế

ướ ể

ể ố ự

ấ ự ươ

2.5 Các ki u d li u nguyên th y ữ ệ loat và double  Ki u s th c: f  Không có giá tr nh nh t và l n nh t. Chúng ớ ấ ị ng. ng, vô c c âm, vô c c d ự ươ  L u ý đ i v i các phép toán: ấ ấ

c khi th c hi n phép

i →

ki u d li u khác tr ki u

ư • M i toán h ng đ u có ki u ch m đ ng thì phép toán chuy n thành phép toán d u ch m đ ng. double thì các toán ự ướ

• Bi n ki u ể float và double có th ép chuy n sang ừ ể boolean. ữ ệ

19/39

có th âm, d ể ố ớ ạ ể • N u có m t toán h ng là ế ộ h ng còn l double tr ạ ạ toán. ế ể

2.5 Các ki u d li u nguyên th y ữ ệ  Ki u ký t ể

ể (char): ự • Có kích th ướ • Ch dùng đ bi u di n các ký t ể ể ỉ

c là hai bytes ễ trong b ộ ự

• Nh v y ki u char trong java có th bi u

ể ể khác nhau. mã Unicode. ể t c 2 di n t

• Giá tr m c đ nh cho m t bi n ki u char là ư ậ ễ ấ ả 16 = 65536 ký t ị ị ặ ộ ự ế ể

20/39

null.

2.5 Các ki u d li u nguyên th y ữ ệ ể  Ki u lu n lý (boolean):

• Ki u boolean ch nh n m t trong hai giá tr : ậ ể ộ ị ỉ

true ho c false. ặ

• Trong java ki u boolean không th chuy n ể

ể i. c l ượ ạ

21/39

• Giá tr m c đ nh c a ki u boolean là false. ể thành ki u s nguyên và ng ố ị ể ị ặ ủ ể

ng ộ

ố ượ ả ủ

c a m t nhóm các đ i ố nhau v thu c tính (t p các ng t

2.6 L p và đ i t ớ  L p: là m t mô t ộ ng t ươ

ề ộ

ớ t ự ượ d li u) và hành vi (t p các ph ữ ệ ươ

ậ ng th c). ậ  Nói cách khác, l p là m t khuôn m u c a ứ ủ ẫ ớ ộ

ng.

 Ví d : l p hình ch nh t, là khuôn m u c a m t hình ch nh t c th . ậ ụ ể ữ

m t đ i t ộ ố ượ ụ ớ ữ ủ ậ ẫ

22/39

class < Tên_l p>{ớ

ữ ệ

ng 2.6 L p và đ i t ố ượ  Khai báo (đ nh nghĩa) l p: ớ ị t _b _nghĩa ừ ổ ; ể ….. ; ữ ệ ể constructor method_1 ….. method_n }

23/39

ng

ừ ủ ớ ớ ể

ớ ớ

ữ ệ ủ ế ầ

2.6 L p và đ i t ố ượ ớ  t _b _nghĩa: ch ph m vi truy c p c a l p ạ ỉ ừ ổ khóa, s d ng đ khai báo l p  class: là t ử ụ  Tên_l p: là tên chúng ta đ t cho l p ặ  field_1, field_2, …., field_m: các thu c tính, ộ các bi n, hay các thành ph n d li u c a l p.ớ

 constructor: ph

ng th c xây d ng, có nhi m ự ứ ệ

ụ v kh i t o đ i t ở ạ ươ ố ượ

ng.  method_1, method_2, …, method_n: các

ng th c th hi n các thao tác x lý, tác ươ ể ệ ứ

ph đ ng lên các thành ph n d li u c a l p. ộ ử 24/39 ủ ớ ữ ệ ầ

ế

ớ ố ượ ữ ả

 Nói cách khác, đ i t

ng là m t tr ng h p

2.6 L p và đ i t ng ố ượ ng: m t th c th có liên quan đ n  Đ i t ộ ể ự ng c nh c a m t v n đ . ề ộ ấ ố ượ

ộ ườ ợ

ng ộ ố ượ

c th c a l p. ụ ể ủ ớ ữ ữ

ng th c: xác đ nh m t hành vi c a m t ộ ủ ộ

ươ ụ

25/39

 Ví d : Hình ch nh t ABCD, là m t đ i t ậ ụ c a l p hình ch nh t. ậ ủ ớ  Ph ị ứ ươ l p. Ví d ph ng th c ứ area, đ tính di n ệ ớ ể tích c a hình ch nh t. Cú pháp t o đ i ố ậ ữ ủ t ng c a l p: ượ Tên_l p tên_đ i_t

ng = new Tên_l p();

ố ượ

ủ ớ

ng

ố ượ

2.6 L p và đ i t ớ  Trong đó:

• Tên_l p: là tên c a l p mà đ i t ng thu c ủ ớ ố ượ ớ ộ

về

ố ượ ng: là tên chúng ta đ t cho đ i ố ặ

t

• tên_đ i_t ngượ • new: t ng th c ừ ể ọ ươ ứ

26/39

ử ụ constructor t o đ i t ng khóa, s d ng đ g i ph ố ượ ạ

ấ ữ ệ

ộ ộ ớ ươ ứ ớ

2.7 Khai báo và nh p xu t d li u  Khai báo: M t phát bi u đ liên k t m t tên ế ể ể ộ ng, m t ph ng th c, m t l p, v i m t tr ộ ộ ườ ho c m t gói. ộ

 Bi n: ế Là m t v trí trong b nh mà ch

ớ ươ ộ ị

ể ế ộ ế

ộ ổ ượ ị ữ ệ ể

ữ ệ ữ ệ

ể ể

27/39

ng trình có th tham chi u đ n qua m t tên, l u ư c. tr m t giá tr d li u có th thay đ i đ ữ ộ Khai báo: t _b _nghĩa ki u_d _li u tên1, tên2, . . . ; //ho c ặ ừ ổ t _b _nghĩa ki u_d _li u tên1 = giá_tr _1, . . . ; ừ ổ

ậ ể

ấ ữ ệ ặ ớ

2.7 Khai báo và nh p xu t d li u  ki u_d _li u: tên c a ki u ho c l p ữ ệ  t _b _nghĩa: các t

ủ khoá c a Java, ch ỉ ừ ủ ế

ế

ế

ể char, giá tr ị

ể ủ ừ ổ ph m vi tác d ng c a bi n. ụ ạ  Ví d :ụ

String firstName; //Khai báo bi n firstName thu c

char ch;// Khai báo bi n ch ki u ể char public char ch1 = ‘a’;// bi n ch1 ki u ban đ u là ‘a’, ph m vi toàn c c ụ ạ ế

l p String ớ

 Khai báo bi n báo cho máy c p phát v trí

28/39

ế ấ

nh đ l u tr m t giá tr c a ki u d li u đó ớ ủ ư ữ ộ ị ủ ể ị ữ ệ

ộ ị ộ

ế ể ế

2.7 Khai báo và nh p xu t d li u ậ ấ ữ ệ ng Là m t v trí trong b nh mà ch  H ng: ươ ằ ớ trình có th tham chi u đ n qua m t tên, l u ư ộ tr m t giá tr d li u không thay đ i. ổ

ị ữ ệ ữ ộ

final ki u_d _li u tên_h ng =

ữ ệ

 Khai báo h ng:ằ t _b _nghĩa ừ ổ LiteralValue;

 Ví d :ụ

final char ch = ‘a’;// Khai báo h ng ch ki u

ể char, có

giá tr là ‘a’ ị

public final int id = 6;// Khai báo h ng id ki u

ể int, có

ph m vi toàn c c

29/39

2.7 Khai báo và nh p xu t d li u ấ ữ ệ đ t gi a hai  M t chu i là m t dãy các ký t ữ

ự ặ ộ

ỗ ặ ụ

ộ d u ngo c kép. Ví d : “Today and tomorrow”, ấ “A”, “”

 Các tác v c a l p chu i: ỗ ụ ủ ớ  N i m t chu i vào m t chu i khác: toán t ỗ

+, ộ ố ỗ

 Đ i m t giá tr s thành chu i: ph ị ố

ng th c ử ộ ví d : String s = “Today” + “and tomorrow”; ứ ươ ổ ộ

ủ ớ

30/39

valueOf c a l p String. Ví d : String s = String.valueOf(123);// k t qu s = “123” ế ỗ ụ ả

2.7 Khai báo và nh p xu t d li u  Đ i m t chu i thành s , s d ng ph

ấ ữ ệ ng ươ

ậ ố ử ụ

 Ví d ụ int n = Integer.parseInt(“123”);// k t ế

ỗ th c parseXXX c a l p t ủ ớ ươ ng ng. ứ ổ ứ

qu n = 123 ả

 So sánh hai chu i v i nhau, s d ng ph ỗ ớ

ng ử ụ ươ

 Ví d ụ boolean x = “ABC”.equals(“ABC”);// k t ế

th c equals c a l p String. ủ ớ ứ

31/39

true qu x = ả

2.7 Khai báo và nh p xu t d li u  L nh gán:

đ

ấ ữ ệ c s d ng đ gán bi u th c ứ ể

ượ ể ệ

(expression) cho bi n (variable) ử ụ ế

 Cú pháp:  Ví d :ụ

// Gán 1 cho x;

// Gán 1.0 cho bankinh;

x = 1; bankinh = 1.0; a = 'A'; x = x + 1;

// Gán 'A' cho a; // L y x c ng v i 1 r i gán vào ớ

x;

ng

ươ

i g i ph ị ủ ờ ọ 32/39

c = Math.max(a, b); /* Gán giá tr c a l th c max(a, b) c a l p Math vào c;*/ ủ ớ

variable = expression;

2.7 Khai báo và nh p xu t d li u  L nh xu t m t chu i ra màn hình:

ấ ữ ệ ng ph

ươ ấ ỗ

ộ th c print, cú pháp nh sau: ệ ứ ư

 System.out.print(StringValue);/* Xu t chu i ỗ StringValue ra màn hình và không xu ng ố dòng */

 System.out.println(StringValue); /* Xu t chu i ỗ StringValue ra màn hình và xu ng dòng */

 Ví d :ụ

System.out.print(“The answer is, ”);//Xu t ra chu i ỗ

“The answer is, ”

33/39

ấ ữ ệ

ộ ậ

ng c a các l p t các l p ệ ạ bàn phím: ừ ớ ớ ừ

2.7 Khai báo và nh p xu t d li u  L nh nh p m t giá tr vào t ị  T o các đ i t ủ ố ượ nguyên thu h n ỷ ơ ươ

 S d ng ph ử ụ

34/39

ng th c nh p d li u. ậ ữ ệ ứ

ấ ữ ệ

ậ ủ ớ

2.7 Khai báo và nh p xu t d li u  Ví d : ụ /* Khai báo inStream c a l p InputStreamReader*/

ng inStream */

InputStreamReader inStream; /* Nh p d li u vào đ i t ố ượ ữ ệ inStream = new InputStreamReader(System.in); BufferedReader inData = new BufferedReader(inStream);

ng inData */

ố ượ

/* Nh p d li u vào đ i t ữ ệ inData = new BuffredReader(new InputStreamReader(System.in));

ư

ữ ộ

// L u tr m t dòng văn b n vào bi n oneLine ế String oneLine = inData.readLine();

35/39

ấ ữ ệ

ố ượ ụ ậ

2.7 Khai báo và nh p xu t d li u ng Scanner: Ví d nh p hai  S d ng đ i t ổ

public static void main(String[] args){ Scanner s = new Scanner(System.in); int a = s.nextInt(); int b = s.nextInt(); int c = a + b; System.out.print(“Tong la:” + c);

}

36/39

}

ử ụ s nguyên a và b và xu t ra t ng ố import java.util.Scanner; public class InTong{

ỏ ự

ậ Câu h i và bài t p 1. S khác nhau gi a mã máy và mã Byte? ữ 2. Các công đo n máy o Java th c hi n trong ả

vi c biên d ch và thông d ch là gì?

ị ng trình xu t dòng ch “Welcome to

t ch

ệ 3. Vi ế

ươ Java” ra màn hình.

4. M i ch ọ

5. Hãy vi

ZED s ẽ

ng trình Java đ u ch a ít nh t bao ươ nhiêu ph ng th c? ươ t m t khai báo h ng Java đ tên ằ ộ ế cho giá tr ‘ị z’.

ế char tên là letter và m t ộ

6. Hãy khai báo m t bi n bi n ế String tên street.

37/39

có th đ

ể ượ ư

c l u tr trong ữ

trong m t xâu (string) r ng? ỗ c gán vào ể ượ

ộ ớ String có th đ

ậ Câu h i và bài t p 7. Có bao nhiêu ký t ự ể char? m t bi n ki u ế 8. Có bao nhiêu ký t ự 9. M t bi n thu c l p ế m t bi n bi n ki u ế

ế 10. S khác nhau gi a chu i t

nhiên “

computer” và

ể char, đúng hay sai? ữ

đ nh danh “

ỗ ự computer” là gì?

ộ ộ ự ị

38/39

ậ Câu h i và bài t p

11. Đ u ra c a đo n mã sau là gì? (T t c các bi n

ấ ả

ế

đ u thu c l p

ỏ ầ ề

ạ ủ ộ ớ String)

street = “Elm St.”; address = “142B”; city = “Amaryllis”; state = “Ioma”; streetAddress = address + “ “ + street; System.out.println(streetAddress); System.out.println(city); System.out.println(“,” + state);

39/39