Giáo trình Lập trình Java (Phần 1)

Tr êng ®¹i häc s ph¹m kü thuËt h ng yªn  
khoa c«ng nghÖ th«ng tin  
---------------ooo------------------  
§Ò c• ¬ng bµi gi¶ng Java  
Nhóm biên soҥn: 1. Hoàng Trӑng ThӃ  
2. NguyӉn Duy Tân  
Trang 1  
C LӨC  
Chѭѫng 1:  
CÁC KHÁI NIӊM CѪ BҦN.................................................................. 5  
BÀI 1. LÀM QUEN VӞI JAVA................................................................................... 5  
I. Lӏch sӱ java ........................................................................................................... 5  
II. Java em là ai ......................................................................................................... 5  
II. Mӝt sӕꢀÿһc trѭng cӫa java ..................................................................................... 5  
III. Các kiӇu ӭng dөng Java........................................................................................ 7  
IV. Máy ҧo Java (JVM-Java Virtual Machine) .......................................................... 7  
BÀI 2 NӄN TҦNG CӪA JAVA ................................................................................ 9  
I. Tұp ký tӵ dùng trong java ...................................................................................... 9  
II. Tӯ khoá cӫa Java .................................................................................................. 9  
III. Ĉӏnh danh (tên) ................................................................................................. 10  
IV. Cҩu trúc mӝt chѭѫng trình java ......................................................................... 10  
V. Chѭѫng trình JAVA ÿҫu tiên .............................................................................. 12  
VI. Chú thích trong chѭѫng trình ............................................................................ 14  
VII. KiӇu dӳ liӋu ..................................................................................................... 15  
VII. Mӝt sӕ phép toán trên kiӇu dӳ liӋu nguyên thuӹ ............................................... 17  
IX. Toán tӱ chuyӇn kiӇu .......................................................................................... 23  
X. Các hàm toán hӑc ............................................................................................... 24  
XI. Các phép toán trên kiӇu kí tӵ ............................................................................. 26  
BÀI 3. ĈIӄU KHIӆN LUӖNG CHѬѪNG TRÌNH .................................................... 27  
I. Cҩu trúc rӁ nhánh ................................................................................................. 27  
II. Cҩu trúc lһp while và do-while ........................................................................... 30  
III. Cҩu trúc for ....................................................................................................... 32  
IV. LӋnh break và continue ..................................................................................... 34  
Chѭѫng 2: LҰP TRÌNH HѬӞNG ĈӔI TѬӦNG ......................................................... 37  
BÀI 1. ĈӎNH NGHƬA LӞP ....................................................................................... 38  
I. Khai báo lӟp ........................................................................................................ 38  
II. Chi tiӃt vӅ khai báo mӝt phѭѫng thӭc ................................................................. 40  
III. Tӯ khoá this ...................................................................................................... 43  
IV. Tӯ khoá super ................................................................................................... 43  
V. Sӱ dөng lӟp ........................................................................................................ 44  
VI. ĈiӅu khiӇn viӋc truy cұp ÿӃn các thành viên cӫa mӝt lӟp .................................. 44  
BÀI 2. KHӢI ĈҪU VÀ DӐN DҼP ............................................................................ 47  
I. Phѭѫng thӭc tҥo dӵng (constructor) ..................................................................... 47  
II. Khӕi khӣi ÿҫu vô danh và khӕi khӣi ÿҫu tƭnh ...................................................... 49  
III. Dӑn dҽp: kӃt thúc và thu rác .............................................................................. 51  
BÀI 3. CÁC THÀNH PHҪN TƬNH ........................................................................... 52  
I. Thuӝc tính tƭnh .................................................................................................... 52  
II. Phѭѫng thӭc tƭnh ................................................................................................ 52  
BÀI 4. NҤP CHӖNG PHѬѪNG THӬC .................................................................. 53  
I. Khái niӋm vӅ phѭѫng thӭc bӝi tҧi ........................................................................ 53  
Trang 2  
II. Yêu cҫu cӫa các phѭѫng thӭc bӝi tҧi ................................................................... 53  
BÀI 5. Kӂ THӮA (INHERITANCE) ........................................................................ 54  
I. Lӟp cѫ sӣ và lӟp dүn xuҩt .................................................................................... 54  
II. Cách xây dӵng lӟp dүn xuҩt ................................................................................ 54  
III. Thӯa kӃ các thuӝc tính ...................................................................................... 54  
IV. Thӯa kӃ phѭѫng thӭc ........................................................................................ 54  
V. Khӣi ÿҫu lӟp cѫ sӣ ............................................................................................. 54  
VI. Ghi ÿè phѭѫng thӭc ( Override ) ....................................................................... 56  
VI. Thành phҫn protected ........................................................................................ 56  
VII. Tӯ khoá final ................................................................................................... 56  
BÀI 6. LӞP CѪ SӢ TRӮU TѬӦNG ......................................................................... 61  
BÀI 7. ĈA HÌNH THÁI ............................................................................................ 62  
BÀI 8. GIAO DIӊN, LӞP TRONG, GÓI ................................................................... 63  
I. Giao diӋn ............................................................................................................. 63  
II. Lӟp trong ............................................................................................................ 65  
Bài 9. MҦNG, XÂU KÝ TӴ, TҰP HӦP ................................................................... 67  
I. Mҧng ................................................................................................................... 67  
II. Xâu ký tӵ ............................................................................................................ 70  
III. Lӟp StringTokenizer ......................................................................................... 75  
IV. Mӝt sӕ lӟp cѫ bҧn cӫa Java ............................................................................... 77  
V. Các lӟp tұp hӧp .................................................................................................. 83  
Chѭѫng 3:  
XӰ LÝ NGOҤI Lӊ ............................................................................ 92  
I. Mөc ÿích cӫa viӋc xӱ lý ngoҥi lӋ .......................................................................... 92  
II. Mô hình sӱ lý ngoҥi lӋ cӫa java .......................................................................... 92  
III. Ĉһc tҧ ngoҥi lӋ ................................................................................................... 93  
III. Ném ra ngoҥi lӋ ................................................................................................. 93  
IV. Bҳt ngoҥi lӋ ....................................................................................................... 93  
V. Khӕi ‘finally’ ...................................................................................................... 95  
VI. Mӝt sӕ lӟp ngoҥi lӋ chuҭn cӫa Java ................................................................... 96  
Chѭѫng 4:  
LҰP TRÌNH ĈA TUYӂN ........................................................................ 97  
I. Các kiӃn thӭc liên quan ........................................................................................ 97  
II. Lұp trình ÿa tuyӃn trong Java .............................................................................. 98  
Chѭѫng 5:  
NHҰP XUҨT (Input/Output) ............................................................... 104  
I. Lӟp luӗng .......................................................................................................... 105  
II. Lӟp File ............................................................................................................ 113  
Chѭѫng 6:  
LҰP TRÌNH ĈӖ HOҤ AWT ................................................................ 120  
I. Giӟi thiӋu vӅ hӋ thӕng ÿӗ hoҥ cӫa Java .............................................................. 120  
II. Trình quҧn lý hiӇn thӏ trong Java ...................................................................... 124  
III. Xӱ lý sӵ kiӋn trong Java .................................................................................. 125  
Chѭѫng 7  
LҰP TRÌNH CѪ SӢ DӲ LIӊU .............................................................. 143  
I. Tәng quan 143  
II. Các kӇu trình ÿiӅu khiӇn JDBC......................................................................... 143  
Trang 3  
III. Các lӟp trong JDBC API dùng ÿӇ truy cұp CSDL ........................................... 146  
IV. KӃt nӕi CSDL vӟi JDBC ................................................................................. 147  
V. Tѭѫng tác vӟi CSDL ........................................................................................ 152  
VI. Quҧn lý giao dӏch ............................................................................................ 160  
Chѭѫng 8: LҰP TRÌNH SOCKET .............................................................................. 164  
I. Các kiӃn thӭc liên quan ...................................................................................... 164  
II. Khҧo sát mӝt sӕ lӟp trong gói java.net .............................................................. 164  
2. Lӟp URL và URI .............................................................................................. 171  
3. Lӟp Socket........................................................................................................ 176  
4. Lӟp ServerSocket.............................................................................................. 182  
5. Lӟp DatagramSocket ......................................................................................... 185  
6. Lӟp DatagramPacket ......................................................................................... 185  
III. TCP Socket ..................................................................................................... 185  
Chѭѫng 9: JAVA MAIL .............................................................................................. 205  
I. Các khái niӋm MAIL ......................................................................................... 205  
II. Gӱi mail vӟi thѭ viӋn có sҹn cӫa java ............................................................... 206  
III. Giӟi thiӋu java mail API .................................................................................. 207  
III. Gӱi mail .......................................................................................................... 212  
IV. Nhұn mail ....................................................................................................... 215  
V. Xoá mail ........................................................................................................... 221  
Chѭѫng 10: LҰP TRÌNH PHÂN TÁN VӞI ................................................................. 222  
JAVA RMI ( REMOTE METHOD INVOKE)............................................................. 222  
I. RMI và lұp trình phân tán ÿӕi tѭӧng .................................................................. 222  
II. Gӑi phѭѫng thӭc tӯ xa và các vҩn ÿӅ phát sinh ................................................. 223  
III. Vai trò cӫa các lӟp trung gian .......................................................................... 223  
IV. Cài ÿһt ÿӕi tѭӧng phân tán .............................................................................. 224  
Chѭѫng 11: JAVA JSP (JAVA SERVLET) ................................................................. 233  
Chѭѫng 12: EJB (ENTERPRISE JAVA BEANS) ........................................................ 234  
I. Tәng quan vӅ JavaBean ..................................................................................... 234  
II. Xây dӵng thành phҫn JavaBean ........................................................................ 234  
III. Tìm hiӇu Instrospector ..................................................................................... 247  
IV. Ĉóng gói JavaBean ......................................................................................... 249  
Trang 4  
Chѭѫng 1:  
CÁC KHÁI NIӊM CѪ BҦN  
BÀI 1. LÀM QUEN VӞI JAVA  
I. Lӏch sӱ java  
Java là mӝt ngôn ngӳ lұp trình ÿѭӧc Sun Microsystems giӟi thiӋu vào tháng 6 năm  
1995. Tӯꢀÿó, nó ÿã trӣ thành mӝt công cө lұp trình cӫa các lұp trình viên chuyên nghiӋp.  
Java ÿѭӧc xây dӵng trên nӅn tҧng cӫa C và C++. Do vұy nó sӱ dөng các cú pháp cӫa C và  
các ÿһc trѭng hѭӟng ÿӕi tѭӧng cӫa C++.  
Ban ÿҫu Java ÿѭӧc thiӃt kӃꢀÿӇ làm ngôn ngӳ viӃt chѭѫng trình cho các sҧn phҭm  
ÿiӋn tӱ dân dөng nhѭꢀÿҫu video, tivi, ÿLӋn thoҥi, máy nhҳn tin.. . Tuy nhiên vӟi sӵ mãnh  
mӁ cӫa Java ÿã khiӃn nó nәi tiӃng ÿӃn mӭc vѭӧt ra ngoài sӵ tѭӣng tѭӧng cӫa các nhà thiӃt  
kӃ ra nó.  
Java khӣi thuӹ tên là Oak- là cây sӗi mӑc ӣ phía sau văn phòng cӫa nhà thiӃt kӃ  
chính ông Jame Gosling, sau này ông thҩy rҵng ÿã có ngôn ngӳ lұp trình tên Oak rӗi, do  
vұy nhóm thiӃt kӃ quyӃt ÿӏnh ÿәi tên, “Java” là cái tên ÿѭӧc chӑn, Java là tên cӫa mӝt  
quán cafe mà nhóm thiӃt kӃ java hay ÿӃn ÿó uӕng.  
II. Java em là ai  
Java là ngôn ngӳ lұp trình hѭӟng ÿӕi tѭӧng, do vұy không thӇ dùng Java ÿӇ viӃt  
mӝt chѭѫng trình hѭӟng chӭc năng. Java có thӇ giҧi quyӃt hҫu hӃt các công viӋc mà các  
ngôn ngӳ khác có thӇ làm ÿѭӧc.  
Java là ngôn ngӳ vӯa biên dӏch vӯa thông dӏch. Ĉҫu tiên mã nguӗn ÿѭӧc biên dӏch  
bҵng công cө JAVAC ÿӇ chuyӇn thành dҥng ByteCode. Sau ÿó ÿѭӧc thӵc thi trên tӯng  
loҥi máy cө thӇ nhӡ chѭѫng trình thông dӏch JAVA. Mөc tiêu cӫa các nhà thiӃt kӃ Java là  
cho phép ngѭӡi lұp trình viӃt chѭѫng trình mӝt lҫn nhѭng có thӇ chҥy trên bҩt cӭ phҫn  
cӭng cө thӇ, thӃ nên khҭu hiӋu cӫa các nhà thiӃt kӃ Java là “Write One, Run Any Where”.  
Ngày nay, Java ÿѭӧc sӱ dөng rӝng rãi ÿӇ viӃt chѭѫng trình chҥy trên Internet. Nó là  
ngôn ngӳ lұp trình hѭӟng ÿӕi tѭӧng ÿӝc lұp thiӃt bӏ, không phө thuӝc vào hӋꢀÿLӅu hành.  
Java không chӍ dùng ÿӇ viӃt các ӭng dөng chҥy ÿѫn lҿ hay trong mҥng mà còn ÿӇ xây  
dӵng các trình ÿiӅu khiӇn thiӃt bӏ cho ÿLӋn thoҥi di ÿӝng, PDA, …  
II. Mӝt sӕꢀÿһc trѭng cӫa java  
1ꢀĈ˯n gi̫n  
Nhӳng ngѭӡi thiӃt kӃ mong muӕn phát triӇn mӝt ngôn ngӳ dӉ hӑc và quen thuӝc  
vӟi ÿa sӕ ngѭӡi lұp trình. Java tӵa nhѭ C++, nhѭng ÿã lѭӧc bӓꢀÿi các ÿһc trѭng phӭc tҥp,  
không cҫn thiӃt cӫa C và C++ nhѭ: thao tác con trӓ, thao tác ÿӏnh nghƭa chӗng toán tӱ  
(operator overloading),… Java không sӱ dөng lӋnh “goto” cNJng nhѭ file header (.h). Cҩu  
trúc “struct” và “union” cNJng ÿѭӧc loҥi bӓ khӓi Java. Nên có ngѭӡi bҧo Java là “C++--“,  
ngө ý bҧo java là C++ nhѭng ÿã bӓꢀÿi nhӳng thӭ phӭc tҥp, không cҫn thiӃt.  
2. H˱ͣng ÿ͙i t˱ͫng  
Có thӇ nói java là ngôn ngӳ lұp trình hoàn toàn hѭӟng ÿӕi tѭӧng, tҩt cҧc trong java  
ÿӅu là sӵ vұt, ÿâu ÿâu cNJng là sӵ vұt.  
3. Ĉ͡c l̵p vͣi h͏ n͉n  
Mөc tiêu chính cӫa các nhà thiӃt kӃ java là ÿӝc lұp vӟi hӋ nӅn hay còn gӑi là ÿӝc  
lұp phҫn cӭng và hӋꢀÿLӅu hành. Ĉây là khҧ năng mӝt chѭѫng trình ÿѭӧc viӃt tҥi mӝt máy  
nhѭng có thӇ chҥy ÿѭӧc bҩt kǤꢀÿâu  
Trang 5  
Tính ÿӝc lұp vӟi phҫn cӭng ÿѭӧc hiӇu theo nghƭa mӝt chѭѫng trình Java nӃu chҥy  
ÿúng trên phҫn cӭng cӫa mӝt hӑ máy nào ÿó thì nó cNJng chҥy ÿúng trên tҩt cҧ các hӑ máy  
khác. Mӝt chѭѫng trình chӍ chҥy ÿúng trên mӝt sӕ hӑ máy cө thӇꢀÿѭӧc gӑi là phө thuӝc  
vào phҫn cӭng.  
Tính ÿӝc lұp vӟi hӋꢀÿLӅu hành ÿѭӧc hiӇu theo nghƭa mӝt chѭѫng trình Java có thӇ  
chҥy ÿѭӧc trên tҩt cҧ các hӋÿu hành. Mӝt chѭѫng trình chӍ chҥy ÿѭӧc trên mӝt sӕ hӋ  
ÿiӅu hành ÿѭӧc gӑi là phө thuӝc vào hӋꢀÿLӅu hành.  
Các chѭѫng trình viӃt bҵng java có thӇ chҥy trên hҫu hӃt các hӋ nӅn mà không cҫn  
phҧi thay ÿәi gì, ÿiӅu này ÿã ÿѭӧc nhӳng ngѭӡi lұp trình ÿһt cho nó mӝt khҭu hiӋu µvi͇t  
m͡t l̯n, ch̩y m͕i n˯L¶, ÿiӅu này là không thӇ có vӟi các ngôn ngӳ lұp trình khác.  
Ĉӕi vӟi các chѭѫng trình viӃt bҵng C, C++ hoһc mӝt ngôn ngӳ nào khác, trình biên  
dӏch sӁ chuyӇn tұp lӋnh thành mã máy (machine code), hay lӋnh cӫa bӝ vi xӱ lý. Nhӳng  
lӋnh này phө thuӝc vào CPU hiӋn tҥi trên máy bҥn. Nên khi muӕn chҥy trên loҥi CPU  
khác, chúng ta phҧi biên dӏch lҥi chѭѫng trình.  
4. M̩nh mͅ  
Java là ngôn ngӳ yêu cҫu chһt chӁ vӅ kiӇu dӳ liӋu, viӋc ép kiӇu tӵꢀÿӝng bӯa bãi cӫa  
C, C++ nay ÿѭӧc hҥn chӃ trong Java, ÿLӅu này làm chѭѫng trình rõ ràng, sáng sӫa, ít lӛi  
n.Java kiӇm tra lúc biên dӏch và cҧ trong thӡi gian thông dӏch vì vұy Java loҥi bӓ mӝt  
mӝt sӕ loҥi lӛi lұp trình nhҩt ÿӏnh.Java không sӱ dөng con trӓ và các phép toán con trӓ.  
Java kiӇm tra tҩt cҧ các truy nhұp ÿӃn mҧng, chuӛi khi thӵc thi ÿӇꢀÿҧm bҧo rҵng các truy  
nhұp ÿó không ra ngoài giӟi hҥn kích thѭӟc.  
Trong các môi trѭӡng lұp trình truyӅn thӕng, lұp trình viên phҧi tӵ mình cҩp phát  
bӝ nhӟ. Trѭӟc khi chѭѫng trình kӃt thúc thì phҧi tӵ giҧi phóng bӝ nhӟꢀÿã cҩp. Vҩn ÿӅ nҧy  
sinh khi lұp trình viên quên giҧi phóng bӝ nhӟꢀÿã xin cҩp trѭӟc ÿó. Trong chѭѫng trình  
Java, lұp trình viên không phҧi bұn tâm ÿӃn viӋc cҩp phát bӝ nhӟ. Qúa trình cҩp phát, giҧi  
phóng ÿѭӧc thӵc hiӋn tӵꢀÿӝng, nhӡ dӏch vө thu nhһt nhӳng ÿӕi tѭӧng không còn sӱ dөng  
nӳa (garbage collection).  
chӃ bүy lӛi cӫa Java giúp ÿѫn giҧn hóa qúa trình xӱ lý lӛi và hӗi phөc sau lӛi.  
5. H͟ trͫ l̵p trình ÿa tuy͇n  
Ĉây là tính năng cho phép viӃt mӝt chѭѫng trình có nhiӅu ÿRҥn mã lӋnh ÿѭӧc chҥy  
song song vӟi nhau. Vӟi java ta có thӇ viӃt các chѭѫng trình có khҧ năng chҥy song song  
mӝt cách dӉ dàng, hѫn thӃ nӳa viӋc ÿӗng bӝ tài nguyên dùng chung trong Java cNJng rҩt  
ÿѫng giҧn. ĈLӅu này là không thӇ ÿӕi vӟi mӝt sӕ ngôn ngӳ lұp trình khác nhѭ C/C++,  
pascal …  
6. Phân tán  
Java hӛ trӧꢀÿҫy ÿӫ các mô hình tính toán phân tán: mô hình client/server, gӑi thӫ  
tөc tӯ xa…  
7. H͟ trͫ internet  
Mөc tiêu quan trӑng cӫa các nhà thiӃt kӃ java là tҥo ÿLӅu kiӋn cho các nhà phát triӇn  
ӭng dөng có thӇ viӃt các chѭѫng trình ӭng dөng internet và web mӝt cách dӉ dàng, vӟi  
java ta có thӇ viӃt các chѭѫng trình sӱ dөng các giao thӭc TCP, UDP mӝt cách dӉ dàng, vӅ  
lұp trình web phía máy khách java có công nghӋ java applet, vӅ lұp trình web phía máy  
khách java có công nghӋ servlet/JSP, vӅ lұp trình phân tán java có công nghӋ RMI,  
CORBA, EJB, Web Service.  
Trang 6  
8. Thông d͓ch  
Các chѭѫng trình java cҫn ÿѭӧc thông dӏch trѭӟc khi chҥy, mӝt chѭѫng trình java  
ÿѭӧc biên dӏch thành mã byte code mã ÿӝc lұp vӟi hӋ nӅn, chѭѫng trình thông dӏch java sӁ  
ánh xҥ mã byte code này lên mӛi nӅn cө thӇ, ÿLӅu này khiӃn java chұm chҥp ÿi phҫn nào.  
III. Các kiӇu ӭng dөng Java  
Vӟi Java ta có thӇ xây dӵng các kiӇu ӭng dөng sau:  
1. Ͱng dͭng Applets  
Applet là chѭѫng trình Java ÿѭӧc tҥo ra ÿӇ sӱ dөng trên Internet thông qua các trình  
duyӋt hӛ trӧ Java nhѭ IE hay Netscape. Applet ÿѭӧc nhúng bên trong trang Web. Khi  
trang Web hiӇn thӏ trong trình duyӋt, Applet sӁꢀÿѭӧc tҧi vӅ và thӵc thi tҥi trình duyӋt.  
2. Ͱng dͭng dòng l͏nh (console)  
Các chѭѫng trình này chҥy tӯ dҩu nhҳc lӋnh và không sӱ dөng giao diӋnꢀÿӗ hӑa.  
Các thông tin nhұp xuҩt ÿѭӧc thӇ hiӋn tҥi dҩu nhҳc lӋnh.  
3. Ͱng dͭng ÿ͛ h͕a  
Ĉây là các chѭѫng trình Java chҥy ÿӝc lұp cho phép ngѭӡi dùng tѭѫng tác qua giao  
diӋn ÿӗ hӑa.  
4. JSP/Servlet  
Java thích hӧp ÿӇ phát triӇn ӭng dөng nhiӅu lӟp. Applet là chѭѫng trình ÿӗ hӑa  
chҥy trên trình duyӋt tҥi máy trҥm. Ӣ các ӭng dөng Web, máy trҥm gӱi yêu cҫu tӟi máy  
chӫ. Máy chӫ xӱ lý và gӱi kӃt quҧ trӣ lҥi máy trҥm. Các Java API chҥy trên máy chӫ chӏu  
trách nhiӋm xӱ lý tҥi máy chӫ và trҧ lӡi các yêu cҫu cӫa máy trҥm. Các Java API chҥy trên  
máy chӫ này mӣ rӝng khҧ năng cӫa các ӭng dөng Java API chuҭn. Các ӭng dөng trên máy  
chӫ này ÿѭӧc gӑi là các JSP/Servlet. hoһc Applet tҥi máy chӫ. Xӱ lý Form cӫa HTML là  
cách sӱ dөng ÿѫn giҧn nhҩt cӫa JSP/Servlet. Chúng còn có thӇꢀÿѭӧc dùng ÿӇ xӱ lý dӳ liӋu,  
thӵc thi các giao dӏch và thѭӡng ÿѭӧc thӵc thi thông qua máy chӫ Web.  
5. Ͱng dͭng c˯ sͧ dͷ li͏u  
Các ӭng dөng này sӱ dөng JDBC API ÿӇ kӃt nӕi tӟi cѫ sӣ dӳ liӋu. Chúng có thӇ là  
Applet hay ӭng dөng, nhѭng Applet bӏ giӟi hҥn bӣi tính bҧo mұt.  
6. Ͱng dͭng m̩ng  
Java là mӝt ngôn ngӳ rҩt thích hӧp cho viӋc xây dӵng các ӭng dөng mҥng. Vӟi thѭ  
viӋn Socket bҥn có thӇ lұp trình vӟi hai giao thӭc: UDP và TCP.  
7. Ͱng dͭng nhi͉u t̯ng  
Vӟi Java bҥn có thӇ xây dӵng phân tán nhiӅu tҫng vӟi nhiӅu hӛ trӧ khác nhau nhѭ:  
RMI, CORBA, EJB, Web Service  
8. Ͱng dͭng cho các thi͇t b͓ di ÿ͡ng  
HiӋn nay phҫn lӟn các thiӃt bӏ di ÿӝng nhѭ: ĈiӋn thoҥi di ÿӝng, máy trӧ giúp cá  
nhân… ÿӅu hӛ trӧ Java. ThӃ nên bҥn có thӇ xây dӵng các ӭng dөng chҥy trên các thiӃt bӏ  
di ÿӝng này. Ĉây là mӝt kiӇu ӭng dөng khá hҩp dãn, bӣi vì các thiӃt bӏ di ÿӝng này ngày  
càng phә biӃn và nhu cҫu có các ӭng dөng chҥy trên ÿó, ÿһc biӋt là các ӭng dөng mang  
tính chҩt giҧi trí nhѭ game  
IV. Máy ҧo Java (JVM-Java Virtual Machine)  
Máy ҧo là mӝt phҫn mӅm mô phӓng mӝt máy tính thұt (máy tính ҧo). Nó có tұp  
hӧp các lӋnh logic ÿӇ xác ÿӏnh các hoҥt ÿӝng cӫa máy tính và có mӝt hӋÿu hành ҧo.  
Ngѭӡi ta có thӇ xem nó nhѭ mӝt máy tính thұt (máy tính có phҫn cӭng ҧo, hӋꢀÿLӅu hành  
Trang 7  
ҧo). Nó thiӃt lұp các lӟp trӯu tѭӧng cho: Phҫn cӭng bên dѭӟi, hӋꢀÿLӅu hành, mã ÿã biên  
dӏch.  
Trình biên dӏch chuyӇn mã nguӗn thành tұp các lӋnh cӫa máy ҧo mà không phө thuӝc  
vào phҫn cӭng và hӋꢀÿLӅu hành cө thӇ. Trình thông dӏch trên mӛi máy sӁ chuyӇn tұp lӋnh  
này thành chѭѫng trình thӵc thi. Máy ҧo tҥo ra mӝt môi trѭӡng bên trong ÿӇ thӵc thi các  
lӋnh bҵng cách:  
Ø Nҥp các file .class  
Ø Quҧn lý bӝ nhӟ  
Ø Dӑn “rác”  
ViӋc không nhҩt quán cӫa phҫn cӭng làm cho máy ҧo phҧi sӱ dөng ngăn xӃp ÿӇ lѭu trӳ  
các thông tin sau:  
Ø Các “Frame” chӭa các trҥng thái cӫa các phѭѫng thӭc.  
Ø Các toán hҥng cӫa mã bytecode.  
Ø Các tham sӕ truyӅn cho phѭѫng thӭc.  
Ø Các biӃn cөc bӝ.  
Khi JVM thӵc thi mã, mӝt thanh ghi cөc bӝ có tên “Program Counterÿѭӧc sӱ dөng.  
Thanh ghi này trӓ tӟi lӋnh ÿang thӵc hiӋn. Khi cҫn thiӃt, có thӇ thay ÿәi nӝi dung thanh  
ghi ÿӇꢀÿәi hѭӟng thӵc thi cӫa chѭѫng trình. Trong trѭӡng hӧp thông thѭӡng thì tӯng lӋnh  
mӝt nӕi tiӃp nhau sӁꢀÿѭӧc thӵc thi.  
Mӝt khái niӋm thông dөng khác trong Java là trình biên dӏch “Just In Time-JIT”. Các  
trình duyӋt thông dөng nhѭ Netscape hay IE ÿӅu có JIT bên trong ÿӇ tăng tӕc ÿӝ thӵc thi  
chѭѫng trình Java. Mөc ÿích chính cӫa JIT là chuyӇn tұp lӋnh bytecode thành mã máy cө  
thӇ cho tӯng loҥi CPU. Các lӋnh này sӁꢀÿѭӧc lѭu trӳ và sӱ dөng mӛi khi gӑi ÿӃn.  
Trang 8  
BÀI 2 NӄN TҦNG CӪA JAVA  
I. Tұp ký tӵ dùng trong java  
Mӑi ngôn ngӳ nói chung, ngôn ngӳ lұp trình nói riêng ÿӅu phҧi xây dӵng trên mӝt  
tұp hӧp chӳ cái (hay còn gӑi là bҧng chӳ cái), các kí tӵꢀÿѭӧc nhóm lҥi theo mӝt cách nào  
ÿó ÿӇ tҥo thành các tӯ, các tӯ lҥi ÿѭӧc nhóm lҥi thành các câu (trong ngôn ngӳ lұp trình  
gӑi là câu lӋnh), mӝt chѭѫng trình máy tính tính là mӝt tұp các câu lӋnh ÿѭӧc bӕ trí theo  
mӝt trұt tӵ mà ngѭӡi viӃt ra chúng sҳp ÿһt  
Ngôn ngӳ java ÿѭӧc ÿѭӧc xây dӵng trên bҧng chӳ cái unicode, do vұy ta có thӇ  
dùng các kí tӵ unicode ÿӇꢀÿһt tên cho các ÿӏnh danh.  
II. Tӯ khoá cӫa Java  
Mӛi ngôn ngӳ lұp trình có mӝt tұp các tӯ khoá, ngѭӡi lұp trình phҧi sӱ dөng tӯ  
khoá theo ÿúng nghƭa mà ngѭӡi thiӃt kӃ ngôn ngӳꢀÿã ÿӅ ra, ta không thӇꢀÿӏnh nghƭa lҥi  
nghƭa cӫa các tӯ khoá, nhѭ sӱ dөng nó ÿӇꢀÿһt tên biӃn, hàm..  
Sau ÿây là m͡t s͙ tͳ khoá th˱ͥng g̿p:  
Tӯ khóa  
Mô tҧ  
Sӱ dөng ÿӇ khai báo lӟp, phѭѫng thӭc trӯu tѭӧng  
KiӇu dӳ liӋu logic  
Ĉѭӧc sӱ dөng ÿӇ kӃt thúc vòng lһp hoһc cҩu trúc switch  
kiӇu dӳ liӋu sӕ nguyên  
abstract  
boolean  
break  
byte  
ÿѭӧc sӱ dөng trong lӋn switch  
Chѭa ÿѭӧc sӱ dөng (ÿӇ dành cho tѭѫng lai)  
ÿѭӧc sӱ dөng trong xӱ lý ngoҥi lӋ  
kiӇu dӳ liӋu ký tӵ  
case  
cast  
catch  
char  
Dùng ÿӇ khai báo lӟp  
class  
Chѭa ÿѭӧc dùng  
const  
continue  
default  
do  
double  
else  
ÿѭӧc dùng trong vòng lһp ÿӇ bҳt ÿҫu mӝt vòng lһp mӟi  
ÿѭӧc sӱ dөng trong lӋnh switch  
ÿѭӧc dùng trong vòng lһp ÿLӅu kiӋn sau  
kiӇu dӳ liӋu sӕ thӵc  
khҧ năng lӵa chӑn thӭ hai trong câu lӋnh if  
chӍ rҵng mӝt lӟp ÿӵѫc kӃ thӯa tӯ mӝt lӟp khác  
Gía trӏ logic  
extends  
false  
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  
final  
finally  
float  
phҫn cuӕi cӫa khӕi xӱ lý ngoҥi lӋ  
kiӇu sӕ thӵc  
Câu lӋnh lһp  
for  
Chѭa ÿѭӧc dùng  
goto  
Câu lӋnh lӵa chӑn  
if  
chӍ rҵng mӝt lӟp triӇn khai tӯ mӝt giao diӋn  
Khai báo sӱ dөng thѭ viӋn  
kiӇm tra mӝt ÿӕi tѭӧng có phҧi là mӝt thӇ hiӋn cӫa lӟp hay không  
sӱ dөng ÿӇ khai báo giao diӋn  
kiӇu sӕ nguyên  
implements  
import  
instanceof  
interface  
long  
Khai báo phѭѫng thӭc ÿѭӧc viӃt bҵng ngông ngӳ biên dӏch C++  
tҥo mӝt ÿӕi tѭӧng mӟi  
native  
new  
Trang 9  
null  
mӝt ÿӕi tѭӧng không tӗn tҥi  
Dùng ÿӇ khai báo mӝt gói  
ÿһc tҧ truy xuҩt  
ÿһc tҧ truy xuҩt  
ÿһc tҧ truy xuҩt  
package  
private  
protected  
public  
return  
short  
Quay tӯ phѭѫng thӭc vӅ chӛ gӑi nó  
kiӇu sӕ nguyên  
Dùng ÿӇ khai báo biӃn, thuӝc tính tƭnh  
Truy xuҩt ÿӃn lӟp cha  
lӋnh lӵa chӑn  
mӝt phѭѫng thӭc ÿӝc quyӅn truy xuҩt trên mӝt ÿӕi tѭӧng  
Ám chӍ chính lӟp ÿó  
static  
super  
switch  
synchronized  
this  
Ném ra ngoҥi lӋ  
Khai báo phѭѫng thӭc ném ra ngoҥi lӋ  
Giá trӏ logic  
throw  
throws  
true  
sӱ dөng ÿӇ bҳt ngoҥi lӋ  
try  
Dùng ÿӇ khai báo mӝt phѭѫng thӭc không trҧ vӅ giá trӏ  
Dùng trong cҩu trúc lһp  
void  
while  
III. Ĉӏnh danh (tên)  
Tên dùng ÿӇ xác ÿӏnh duy nhҩt mӝt ÿҥi lѭӧng trong chѭѫng trình. Trong java tên ÿѭӧc  
ÿһt theo quy tҳc sau:  
- Không trùng vӟi tӯ khoá  
- Không bҳt ÿҫu bҵng mӝt sӕ, tên phҧi bҳt ÿҫu bҵng kí tӵ hoһc bҳt ÿҫu bҵng kí $,_  
- Không chӭa dҩu cách, các kí tӵ toán hӑc nhѭ +, -, *,/, %..  
- Không trùng vӟi mӝt ÿӏnh danh khác trong cùng mӝt phҥm vi  
Chú ý:  
- Tên nên ÿһt sao cho có thӇ mô tҧꢀÿѭӧc ÿӕi tѭӧng trong thӵc tӃ  
- Giӕng nhѭ C/C++, java có phân biӋt chӳ hoa chӳ thѭӡng  
- Trong java ta có thӇꢀÿһt tên vӟi ÿӝ dài tuǤ ý  
- Ta có thӇ sӱ dөng các kí tӵ tiӃng viӋt ÿӇꢀÿһt tên  
Quy ˱ͣc v͉ ÿ̿t tên trong java  
Ta nên ÿһt tên biӃn, hҵng, lӟp, phѭѫng thӭc sao cho nghƭa cӫa chúng rõ ràng, dӉ hiӇu,  
khoa hӑc và mang tính ѭӟc lӋ quӕc tӃ. Do java có phân biӋt chӳ hoa, chӳ thѭӡng nên ta  
phҧi cҭn thұn và chú ý.  
Sau ÿây là quy ѭӟc ÿһt tên trong java (chú ý ÿây chӍ là quy ѭӟc do vұy không bҳt buӝc  
phҧi tuân theo quy ѭӟc này):  
- Ĉӕi vӟi biӃn và phѭѫng thӭc thì tên bao giӡ cNJng bҳt ÿҫu bҵng ký tӵ thѭӡng, nӃu tên  
có nhiӅu tӯ thì ghép lҥi thì: ghép tҩt cҧ các tӯ thành mӝt, ghi tӯꢀÿҫu tiên chӳ thѭӡng,  
viӃt hoa kí tӵꢀÿҫu tiên cӫa mӛi tӯ theo sau trong tên, ví dө area, radius, readInteger…  
-ꢀĈӕi vӟi tên lӟp, giao diӋn ta viӃt hoa các kí tӵꢀÿҫu tiên cӫa mӛi tӯ trong tên, ví dө lӟp  
WhileTest, Circle  
- Tên hҵng bao giӡ cNJng viӃt hoa, nӃu tên gӗm nhiӅu tӯ thì chúng ÿѭӧc nӕi vӟi hau bӣi  
tӵ ghҥch dѭӟi ‘_’, ví dө PI, MAX_VALUE  
IV. Cҩu trúc mӝt chѭѫng trình java  
- Mӛi ӭng dөng Java bao gӗm mӝt hoһc nhiӅu ÿѫn vӏ biên dӏch (mӛi ÿѫn vӏ biên dӏch  
là mӝt tӋp tin có phҫn mӣ rӝng Java)  
- Mӛi ÿѫn vӏ biên dӏch bao gӗm mӝt hoһc nhiӅu lӟp  
Trang 10  
- Mӛi ӭng dөng ÿӝc lұp phҧi có duy nhҩt mӝt phѭѫng thӭc main (ÿLӇm bҳt ÿҫu cӫa ӭng  
dөng)  
- Mӛi ÿѫn vӏ biên dӏch có nhiӅu nhҩt mӝt lӟp ÿѭӧc khai báo là public, nӃu nhѭ trong  
ÿѫn vӏ biên dӏch có lӟp public thì tên cӫa ÿѫn vӏ biên dӏch phҧi trùng vӟi tên cӫa lӟp  
public (giӕng hӋt nhau cҧ ký tӵ hoa lүn ký tӵ thѭӡng)  
- Bên trong thân cӫa mӕi lӟp ta khai báo các thuӝc tính, phѭѫng thӭc cӫa lӟp ÿó, Java  
là ngôn ngӳ hѭӟng ÿӕi tѭӧng, do vұy mã lӋnh phҧi nҵm trong lӟp nào ÿó. Mӛi lӋnh ÿӅu  
ÿѭӧc kӃt thúc bҵng dҩu chҩm phҧy “;”.  
t ÿɇn vʈ biên dʈch là m͙t tʄp  
tin .java  
//Nhɪp khɦu các thɉ viʄn  
import thɉ_viʄn;  
//Xây dͱng các l͛p  
public class clsMain{  
«
public static void main(String args[])  
{
//ÿLʀm bɬt ÿɤu cͧa chɉɇng trình  
}
«
}
class l͛p1  
{
«
}
class l͛p2  
{
«
}
- Trong ngôn ngӳ Java, lӟp là mӝt ÿѫn vӏ mүu có chӭa dӳ liӋu và mã lӋnh liên quan ÿӃn  
- mӝt thӵc thӇ nào ÿó. Khi xây dӵng mӝt lӟp, thӵc chҩt bҥn ÿang tҥo ra mӝt mӝt kiӇu dӳ  
liӋu. KiӇu dӳ liӋu mӟi này ÿѭӧc sӱ dөng ÿӇ xác ÿӏnh các biӃn mà ta thѭѫng gӑi là “ÿӕi  
Wѭӧng”. Ĉӕi tѭӧng là các thӇ hiӋn (instance) cӫa lӟp. Tҩt cҧ các ÿӕi tѭӧng ÿӅu thuӝc vӅ  
mӝt lӟp có chung ÿһc tính và hành vi. Mӛi lӟp xác ÿӏnh mӝt thӵc thӇ, trong khi ÿó mӛi  
ÿӕi tѭӧng là mӝt thӇ hiӋn thӵc sӵ.  
- Khi ban khai báo mӝt lӟp, bҥn cҫn xác ÿӏnh dӳ liӋu và các phѭѫng thӭc cӫa lӟp ÿó.  
VӅ cѫ bҧn mӝt lӟp ÿѭӧc khai báo nhѭ sau:  
Trang 11  
Cú pháp:  
class classname  
{ var_datatype variablename;  
...........  
<met_datatype> methodname (parameter_list){...........}  
............  
}
Trong ÿó:  
class - Tӯ khoá xác ÿӏnh lӟp  
classname - Tên cӫa lӟp  
var_datatype - kiӇu dӳ liӋu cӫa biӃn  
variablename - Tên cӫa biӃn  
met_datatype - KiӇu dӳ liӋu trҧ vӅ cӫa phѭѫng thӭc  
methodname - Tên cӫa phѭѫng thӭc  
parameter_list – Các tham sӕꢀÿѭӧc cӫa phѭѫng thӭc  
- Bҥn còn có thӇꢀÿӏnh nghƭa mӝt lӟp bên trong mӝt lӟp khác. Ĉây là lӟp xӃp lӗng nhau,  
các thӇ hiӋn (instance) cӫa lӟp này tӗn tҥi bên trong thӇ hiӋn cӫa mӝt lӟp che phӫ chúng.  
Nó chi phӕi viӋc truy nhұp ÿӃn các thành phҫn cӫa lӟp bao phӫ chúng. Có hai loҥi lӟp  
trong ÿó là lӟp trong tƭnh “static” và lӟp trong không tƭnh “non static”  
+ Lӟp trong tƭnh (static)  
Lӟp trong tƭnh ÿѭӧc ÿӏnh nghƭa vӟi tӯ khoá “static”. Lӟp trong tƭnh có thӇ truy nhұp  
vào các thành phҫn tƭnh cӫa lӟp phӫ nó.  
+ Lӟp trong không tƭnh (non static)  
Lӟp bên trong (không phҧi là lӟp trong tƭnh) có thӇ truy nhұp tҩt cҧ các thành phҫn cӫa  
lӟp bao nó, song không thӇ ngѭӧc lҥi.  
V. Chѭѫng trình JAVA ÿҫu tiên  
ĈӇ có thӇ biên dӏch và chҥy các chѭѫng trình java ta phҧi cài  
- JRE (Java Runtime Enviroment) môi trѭӡng thӵc thi cӫa java, nó bao gӗm: JVM (Java  
Virtual Machine) máy ҧo java vì các chѭѫng trình java ÿѭӧc thông dӏch và chҥy trên  
máy ҧo java và tұp các thѭ viӋn cҫn thiӃt ÿӇ chҥy các ӭng dөng java.  
- Bӝ công cө biên dӏch và thông dӏch JDK cӫa Sun Microsystem  
Sau khi cài ÿһt JDK (giҧ sӱ thѭ mөc cài ÿһt là C:\JDK1.4) ta sӁ nhұn ÿѭӧc mӝt cҩu trúc  
thѭ mөc nhѭ sau:  
-ꢀĈӇ biên dӏch mӝt chѭѫng trình java sang mã byte code ta dùng lӋnh  
C:\JDK1.4\BIN\javac TênT͏p.java  
-ꢀĈӇ thông dӏch và chҥy chѭѫng trình ta sӱ dөng lӋnh  
Trang 12  
C:\JDK1.4\BIN\java TênTӋp  
ĈӇ biên dӏch và chҥy chѭѫng trình Java ÿѫn giҧn ta nên thiӃt ÿһt hai biӃn môi trѭӡng  
paht” và classpath” nhѭ sau:  
-ꢀĈӕi vӟi dòng WinNT:  
+ R-Click vào My Computerà chӑn Propertiesà chӑn AdvancedàEnviroment  
Variables  
+ Trong phҫn System variables chӑn new ÿӇ thêm biӃn môi trѭӡng mӟi, trong hӝp  
thoҥi hiӋn ra gõ “classpath” vào ô Variable Name và  
“.;C:\jdk1.4\lib\tools.jar;C:\jdk1.4\lib\dt.jar;C:\jdk1.4\jre\lib\rt.jar” trong ô variable  
value (chú ý không gõ dҩu “ vào, mөc ÿích ÿӇ cho dӉ nhìn mà thôi)  
+ CNJng trong phҫn System variables tìm ÿӃn phҫn path trong danh sáchàchӑn edit  
ÿӇ sӱa lҥi giá trӏ hiӋn có, trong ô value ta thêm vào cuӕi “;C:\jdk1.4\bin”  
Công viӋc ÿһt các biӃn môi trѭӡng ÿã xong, ÿӇ thҩy ÿѭӧc tác dөng cӫa các biӃn môi  
tUѭӡng ta cҫn phҧi khӣi ÿӝng lҥi máy  
-ꢀĈӕi vӟi dòng Win9X:  
Mӣ tӋp C:\Autoexec.bat sau ÿó thêm vào hai dòng sau:  
+classpath=.;C:\jdk1.4\lib\tools.jar;C:\jdk1.4\lib\dt.jar;C:\jdk1.4\jre\lib\rt.jar  
+ path=…;c:\jdk1.4\bin  
Khӣi ÿӝng lҥi máy ÿӇ thҩy ÿѭӧc tác dөng cӫa các biӃn môi trѭӡng này  
Ví dͭÿ̯u tiên: chѭѫng trình Hello World (chѭѫng trình khi chҥy sӁ in ra màn hình lӡi  
chào Hello World)  
Các bѭӟc:  
Trang 13  
- Mӣ mӝt chѭѫng trình soҥn thҧo văn bҧn hӛ trӧ asciii, nhѭ notepad, wordpad,  
EditPlus… và gõ vào các dòng sau:  
public class HelloWorld {  
public static void main(String[] args){  
System.out.println("Hello World");  
}
}
- Ghi lҥi vӟi cái tên C:\HelloWorld.java (chú ý tên tӋp phҧi trùng vӟi tên lӟp, kӇ cҧ chӳ  
hoa chӳ thѭӡng, phҫn mӣ rӝng là java)  
- Mӣ cӫa sә DOS Prompt  
+ ChuyӇn vào thѭ mөc C:\  
+ Gõ lӋnh javac HelloWorld.java ÿӇ biên dӏch chѭѫng trình, nӃu viӋc biên dӏch  
thành công (chѭѫng trình không có lӛi cú pháp) thì ta sӁ thu ÿѭӧc tӋp  
HelloWorld.class trong cùng thѭ mөc, nӃu trong chѭѫng trình còn lӛi cú pháp  
thì trong bӭѫc này ta sӁ nhұn ÿѭӧc mӝt thông báo lӛi và lúc này tӋp  
HelloWorld.class cNJng không ÿѭӧc tҥo ra  
+ Gõ lӋnh java HelloWorld (chú ý không gõ phҫn mӣ rӝng) ÿӇ chҥy chѭѫng trình  
HelloWorld.  
Sau khi thông dӏch và chҥy ta nhұn ÿѭӧc  
VI. Chú thích trong chѭѫng trình  
Trong java ta có 3 cách ÿӇ ghi chú thích  
Cách 1: sӱ dөng cһp /* và */ ý nghƭa cӫa cһp chú thích này giӕng nhѭ cӫa C, C++  
Cách 2: sӱ dөng cһp // ý nghƭa cӫa cһp chú thích này giӕng nhѭ cӫa C, C++  
Cách 3: sӱ dөng cһp /** và */, ÿây là kiӇu chú thích tài liӋu (không có trong C/C++), nó  
dùng ÿӇ tҥo ra tài liӋu chú thích cho chѭѫng trình.  
Vӟi cách thӭ nhҩt và cách ba ta có thӇ viӃt chú thích trên nhiӅu dòng, vӟi cách chú thích  
hai ta chӍ có thӇ chú thích trên mӝt dòng.  
Chú ý: Trong java ta có thӇꢀÿһt chú thích ӣꢀÿâu?, câu trҧ lӡi là: ӣꢀÿâu có thӇꢀÿһt ÿѭӧc mӝt  
dҩu cách thì ӣꢀÿó có thӇꢀÿһt chú thích.  
Trang 14  
VII. KiӇu dӳ liӋu  
1. Các ki͋u dͷ li͏u nguyên thuͽ  
u nguyên thuͷ  
kiɾu logic boolean  
Kiʀu kí tͱ  
Kiʀu s͑  
Kiʀu s͑  
Kiʀu s͑ thͱc  
char  
byte  
short  
long  
boolean  
int  
float  
doubl  
e
Lӟp bao  
Tӯ khoá  
Mô tҧ  
Kích cӥ  
Tӕi thiӇu Tӕi ÿa  
(kiӇu sӕ nguyên)  
byte  
short  
int  
sӕ nguyên mӝt byte  
sӕ nguyên ngҳn  
sӕ nguyên  
8 bit  
16 bit  
32 bit  
64 bit  
-128  
127  
Byte  
Short  
Integer  
-215  
215-1  
231-1  
-231  
-263  
long  
sӕ nguyên dài  
-263-1 Long  
(kiӇu sӕ thӵc)  
float  
kiӇu thӵc vӟi ÿӝ chính 32 bit  
xác ÿѫn  
IEEE754  
IEEE754  
IEEE75 Float  
4
IEEE75 Double  
4
double  
Double-precision  
floating point  
64 bit  
(kiӇu khác)  
char  
kiӇu kí tӵ  
16 bit  
Unicode 0 Unicode Character  
216-1  
boolean  
void  
kiӇu logic  
-
true hoһc false -  
-
-
Boolean  
Void  
-
-
Ĉһc ÿLӇm cӫa các biӃn có kiӇu nguyên thӫy là vùng nhӟ cӫa chúng ÿѭӧc cҩp phát ӣ phҫn  
stack. Do vұy viӋc truy xuҩt vào mӝt biӃn kiӇu nguyên thӫy rҩt nhanh.  
2. Ki͋u tham chi͇u  
Trong Java có 3 kiӇu dӳ liӋu tham chiӃu  
KiӇu dӳ liӋu  
Mҧng (Array)  
Mô tҧ  
Tұp hӧp các dӳ liӋu cùng kiӇu.  
Lӟp (Class)  
Là sӵ cài ÿһt mô tҧ vӅ mӝt ÿӕi tѭӧng trong bài toán.  
Giao diӋn  
(Interface)  
Là mӝt lӟp thuҫn trӯu tѭӧng ÿѭӧc tҥo ra cho phép cài ÿһt  
ÿa thӯa kӃ trong Java.  
Ĉһc ÿLӇm cӫa các biӃn kiӇu tham chiӃu là nó chӭa ÿӏa chӍ cӫa ÿӕi tѭӧng mà nó trӓ  
ÿӃn.  
Trang 15  
Ĉ͑i tɉͣng  
Biɼn tham chiɼu  
Vùng nhӟ cӫa biӃn tham chiӃu ÿѭӧc cҩp phát ӣ vùng nhӟ stack còn vùng nhӟ cӫa  
ÿӕi tѭӧng ÿѭӧc cҩp phát ӣ vùng nhӟ heap. ViӋc truy xҩt vào vùng nhӟ heap chұm hѫn truy  
xҩt vào vùng nhӟ stack tuy nhiên java có cѫ chӃ cho phép truy cұp vào vùng nhӟ heap vӟi  
tӕc ÿӝ xҩp xӍ bҵng tӕc ÿӝ truy cұp vào vùng nhӟ stack.  
VIII. Khai báo bi͇n  
1. Khai báo bi͇n  
7ѭѫng tӵ ngôn ngӳ C/C++, ÿӇ khai báo biӃn trong java ta sӱ dөng cú pháp sau:  
type name [=InitValue];  
trong ÿó:  
- type là kiӇu dӳ liӋu cuҧ biӃn  
- name là tên cӫa biӃn, tên biӃn là mӝt xâu kí tӵꢀÿѭӧc ÿһt theo quy tҳc ÿһt tên cӫa java  
- InitValue là giá trӏ khӣi tҥo cho biӃn, ÿây là phҫn tuǤ chӑn, nӃu bӓ qua phҫn này thì giá  
trӏ ban ÿҫu cӫa biӃn ÿѭӧc khӣi tҥo giá trӏ mһc ÿӏnh  
Chú ý:  
- NӃu cҫn khai báo nhiӅu biӃn có cùng mӝt kiӇu dӳ liӋu ta có thӇꢀÿһt các khai báo các biӃn  
trên mӝt dòng, các biӃn này ÿѭӧc phân cách nhau bӣi dҩu phҧy  
- Java sӁ xӱ lý các biӃn không ÿѭӧc khӣi ÿҫu giá trӏ nhѭ sau:  
+ Ĉӕi vӟi thuӝc tính (biӃn ÿѭӧc khai báo trong phҥm vi cӫa lӟp) thì Java sӁ tӵꢀÿӝng  
khӣi gán giá trӏ cho các biӃn theo quy tҳc sau:  
+ giá trӏ 0 cho kiӇu dӳ liӋu sӕ  
+ false cho kiӇu logic  
+ kí tӵ null (mã 0) cho kí tӵ  
+ giá trӏ null cho kiӇu ÿӕi tѭӧng  
+ Ĉӕi vӟi các biӃn cөc bӝ thì biӃn không ÿѭӧc khӟi gán giá trӏ mһc ÿӏnh, tuy nhiên  
Java sӁ báo lӛi nӃu ta sӱ dөng mӝt biӃn chѭa ÿѭӧc nhұn giá trӏ  
2. Ph̩m vi bi͇n  
Mӛi biӃn ÿѭӧc khai báo ra có mӝt phҥm vi hoҥt ÿӝng, phҥm vi cӫa biӃn là nѫi mà  
biӃn có thӇꢀÿѭӧc truy cұp, ÿLӅu này xác ÿӏnh cҧ tính thҩy ÿѭӧc và thӡi gian sӕng cӫa biӃn.  
Trang 16  
Ø BiӃn phҥm vi lӟp là biӃn ÿѭӧc khai báo bên trong lӟp nhѭng bên ngoài các phѭѫng  
thӭc và hàm tҥo, tuy nhiên viӋc khai báo phҧi xuҩt hiӋn trѭӟc khi biӃn ÿѭӧc sӱ dөng  
Ø BiӃn phҥm vi cөc bӝ là biӃn ÿѭӧc khai báo bên trong mӝt khӕi, phҥm vi cӫa biӃn tính  
tӯꢀÿLӇm biӃn ÿѭӧc khai báo cho ÿӃn cuӕi khӕi mà biӃn ÿѭӧc khai báo  
Ví dө:  
{
int i=1;  
// chӍ có i sҹn sàng sӱ dөng  
// cҧ i và j ÿӅu sҹn sàng  
{
int j=10;  
}
// chӍ có i sҹn sàng  
// j không sҹn sàng vì nҵm ngoài phҥm vi  
}
Chú ý: Ta không th͋ làm ÿi͉u sau cho dù nó có th͋ trong C/C++  
{
int i=1;  
{ int i=10;// không ÿѭӧc phép vì ÿã có mӝt biӃn cùng tên vӟi nó }  
}
Nhӳng ngѭӡi thiӃt kӃ java cho rҵng ÿLӅu ÿó có thӇ gây lҫn lӝn, do vұy hӑꢀÿã quyӃt  
ÿӏnh không cho phép che giҩu mӝt biӃn ӣ phҥm vi lӟn hѫn.  
Chú ý: thӡi gian sӕng cӫa các ÿӕi tѭӧng không tuân theo quy luұt thӡi gian sӕng cӫa các  
biӃn kiӇu nguyên thuӹ.  
VII. Mӝt sӕ phép toán trên kiӇu dӳ liӋu nguyên thuӹ  
1. Phép gán  
Cú pháp BiӃn=BiӇuThӭc;  
Phép gán ÿѭӧc thӵc hiӋn bҵng toán tӱ ‘=’, nó có nghƭa là “ hãy tính toán giá trӏ biӇu  
thӭc bên phҧi dҩu gán, sau ÿó ÿѭa giá trӏꢀÿó vào ô nhӟ có tên nҵm ӣ bên trái dҩu gán’  
Chú ý:  
+ Câu lӋnh gán gӗm mӝt dҩu ‘=’  
+ KiӇu cӫa biӇu thӭc bên phҧi dҩu gán phҧi tѭѫng thích vӟi kiӇu dӳ liӋu cӫa biӃn  
+ Trong java ta có thӇ thӵc hiӋn mӝt dүy gán nhѭ sau:  
i = j = 10;  
// cҧ i và j ÿӅu có giá trӏ 10  
Trang 17  
2. Toán t͵ toán h͕c  
Ngôn ngӳ java cNJng có các phép toán sӕ hӑc nhѭ các ngôn ngӳ khác: + ( phép cӝng), - (  
phép trӯ ), * ( phép nhân ),/ ( phép chia ), % ( phép toán chia lҩy phҫn nguyên)  
Ta mô tҧ tóm tҳt các phép toán sӕ hӑc qua bҧng tәng kӃt sau:  
Phép toán  
Sӱ dөng  
Mô tҧ  
+
-
*
/
op1 + op2 Cӝng op1 vӟiop2  
op1 - op2  
op1 * op2 Nhân op1 vӟi op2  
op1/ op2 chia op1 cho op2  
op1 % op2 Tính phҫn dѭ cӫa phép chia op1 cho op2  
Trӯ op1 cho op2  
%
3. Toán t͵ tăng, gi̫m  
Giӕng nhѭ ngôn ngӳ C/C++, java cNJng có phép toán tăng, giҧm, ta có thӇ mô tҧ  
tóm tҳt qua các bҵng sau:  
Phép toán Sӱ dөng  
Mô tҧ  
ng op lên 1 ÿѫn vӏ, giá trӏ cӫa op ÿѭӧc tăng lên trѭӟc khi biӇu  
thӭc chӭa nó ÿѭӧc tính  
ng op lên 1 ÿѫn vӏ, giá trӏ cӫa op ÿѭӧc tăng lên sau khi biӇu thӭc  
chӭa nó ÿѭӧc tính  
Giҧm op xuӕng1 ÿѫn vӏ, giá trӏ cӫa op ÿѭӧc giҧm xuӕng trѭӟc khi  
biӇu thӭc chӭa nó ÿѭӧc tính  
++  
++  
--  
op++  
++op  
op--  
Giҧm op xuӕng1 ÿѫn vӏ, giá trӏ cӫa op ÿѭӧc giҧm xuӕng sau khi  
biӇu thӭc chӭa nó ÿѭӧc tính  
--  
--op  
Chú ý: n͇u toán t͵ tăng tr˱ͣc, tăng sau(gi̫m tr˱ͣc, gi̫m sau) ÿͱng m͡t mình(không  
nҵm trong biӇu thӭc ) thì chúng hoҥt ÿӝng nhѭ nhau, chúng chӍ khác nhau khi chúng nҵm  
trong biӇu thӭc  
4. Phép toán quan h͏  
Phép toán quan hӋ bao giӡ cNJng cho kӃt quҧ boolean, phép toán quan hӋ sӁ so sánh  
2 giá trӏ, nó xác ÿӏnh mӕi quan hӋ giӳa chúng, ví dө! = sӁ trҧ vӅ true nӃu 2 toán hҥng là  
khác nhau.  
Ta tóm tҳt các phép toán qua bҧng sau:  
Phép toán  
>
Sӱ dөng  
op1 > op2  
op1 >= op2  
op1 < op2  
op1 <= op2  
op1 == op2  
op1! = op2  
Nhұn vӅ giá trӏ true khi  
op1 lӟn hѫn op2  
>=  
<
<=  
==  
!=  
op1 lӟn hѫn hoһc bҵng op2  
op1 nhӓ hѫn op2  
op1 nhӓ hѫn hoһc bҵng op2  
op1 bҵng op2  
op1 khác op2  
Ví dө: Sӱ dөng các phép toán quan hӋ  
public class RelationalDemo {  
public static void main(String[] args) {  
// a few numbers  
Trang 18  
int i = 37;  
int j = 42;  
int k = 42;  
System.out.println("Variable values...");  
System.out.println(" i = " + i);  
System.out.println(" j = " + j);  
System.out.println(" k = " + k);  
//greater than  
System.out.println("Greater than...");  
System.out.println(" i > j = " + (i > j));  
System.out.println(" j > i = " + (j > i));// true  
// false  
System.out.println(" k > j = " + (k > j));// false, they are equal  
//greater than or equal to  
System.out.println("Greater than or equal to...");  
System.out.println(" i >= j = " + (i >= j));// false  
System.out.println(" j >= i = " + (j >= i));// true  
System.out.println(" k >= j = " + (k >= j));// true  
//less than  
System.out.println("Less than...");  
System.out.println(" i < j = " + (i < j));// true  
System.out.println(" j < i = " + (j < i));// false  
System.out.println(" k < j = " + (k < j));// false  
//less than or equal to  
System.out.println("Less than or equal to...");  
System.out.println(" i <= j = " + (i <= j));// true  
System.out.println(" j <= i = " + (j <= i));// false  
System.out.println(" k <= j = " + (k <= j));// true  
//equal to  
System.out.println("Equal to...");  
System.out.println(" i == j = " + (i == j));// false  
System.out.println(" k == j = " + (k == j));// true  
//not equal to  
System.out.println("Not equal to...");  
System.out.println(" i! = j = " + (i! = j));// true  
System.out.println(" k! = j = " + (k! = j));// false  
}
}
Ĉây làꢀÿҫu ra cӫa chѭѫng trình  
Variable values...  
i = 37  
j = 42  
k = 42  
Greater than...  
i > j = false  
j > i = true  
k > j = false  
Greater than or equal to...  
i >= j = false  
j >= i = true  
k >= j = true  
Less than...  
Trang 19  
i < j = true  
j < i = false  
k < j = false  
Less than or equal to...  
i <= j = true  
j <= i = false  
k <= j = true  
Equal to...  
i == j = false  
k == j = true  
Not equal to...  
i! = j = true  
k! = j = false  
5. Phép toán logic  
Java hӛ trӧ 6 phép toán logic ÿѭӧc chӍ ra trong bҧng sau:  
Phép toán  
Sӱ dөng  
Nhұn vӅ giá trӏ true khi  
Cҧ op1 và op2 ÿӅu là true, giá trӏ cӫa op2 chӍꢀÿѭӧc tính  
khi op1 là true  
&&  
op1 && op2  
Hoһc op1 hoһc op2 là true, giá trӏ cӫa op2 chӍꢀÿѭӧc tính  
khi op1 là false  
op là false  
||  
op1 || op2  
! op  
!
Cҧ op1 và op2 ÿӅu là true, giá trӏ cӫa op2 luôn ÿѭӧc tính  
kӇ cҧ khi op1 là false  
&
op1 & op2  
Hoһc op1 hoһc op2 là true, giá trӏ cӫa op2 luôn luônꢀÿѭӧc  
tính kӇ cҧ khi op1 là true  
NӃu op1 khác op2  
|
op1 | op2  
op1 ^ op2  
^
Nh̵n xét:  
+ Phép toán && ( & ) chӍ nhұn giá trӏ true khi và chӍ khi cҧ hai toán hҥng ÿӅu là true  
+ Phép toán || ( | ) chӍ nhұn giá trӏ false khi và chӍ khi cҧ hai toán hҥng là false  
+ Phép toán ^ chӍ nhұn giá trӏ true khi và chӍ khi hai toán hҥng khác nhau  
6. phép toán thao tác trên bit  
6.1. Phép toán d͓ch bit  
Ta sӁ mô tҧ phép toán dӏch chuyӇn qua bҧng sau:  
Phép toán  
Sӱ dөng  
KӃt quҧ  
Dӏch chuyӇn op1 sang phҧi op2 bit, op2 bit phía bên phҧi sӁ  
ÿѭӧc ÿLӅn bҵng các bít 0  
>>  
op1 >> op2  
Dӏch chuyӇn op1 sang trái op2 bit(giӳ nguyên dҩu cӫa op1),  
op2 bit nҵm bên trái sӁꢀÿѭӧc ÿLӅn bҵng các bít 0  
<<  
op1 << op2  
>>>  
op1>>> op2 Dӏch chuyӇn op1 sang phҧi op2 bit, op2 bit  
Sau ÿây là hình minh hoҥ phép toán dӏch bít  
Trang 20  
Tải về để xem bản đầy đủ
pdf 119 trang yennguyen 13/04/2022 6340
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình Java (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_lap_trinh_java_phan_1.pdf