Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

CoreJAVA - Chương 3, 4 ppt
Nội dung xem thử
Mô tả chi tiết
Chöông trình ñaøo taïo kyõ thuaät vieân quoác teá
Core Java
Aptech 9/2002 1
Ch逢挨ng 3. N隠n T違ng C栄a Ngôn Ng英 Java
Mつc tiêu cてa bài:
K院t thúc ch逢挨ng này b衣n có th吋 :
Ü A丑c hi吋u m瓜t ch逢挨ng trình vi院t b茨ng Java
Ü N逸m b逸t nh英ng khái ni羽m c挨 b違n v隠 ngôn ng英 Java
Ü Nh壱n d衣ng các ki吋u d英 li羽u
Ü Nh壱n d衣ng các toán t穎
Ü A鵜nh d衣ng k院t qu違 xu医t li羽u (output) s穎 d映ng các chu厩i thoát (escape sequence)
Ü Nh壱n bi院t các c医u trúc l壱p trình c挨 b違n
3.1 C医u trúc m瓜t ch逢挨ng trình Java
Ph亥n đ亥u c栄a m瓜t ch逢挨ng trình Java xác đ鵜nh thông tin môi tr逢運ng. A吋 làm đ逢嬰c vi羽c này,
ch逢挨ng trình đ逢嬰c chia thành các l噂p ho員c các gói riêng bi羽t. Nh英ng gói này s胤 đ逢嬰c ch雨 d磯n
trong ch逢挨ng trình. Thông tin này đ逢嬰c ch雨 ra v噂i s詠 tr嬰 giúp c栄a phát bi吋u nh壱p “import”.
M厩i ch逢挨ng trình có th吋 có nhi隠u h挨n m瓜t phát bi吋u nh壱p. D逢噂i đây là m瓜t ví d映 v隠 phát bi吋u
nh壱p:
import java. awt.*;
Phát bi吋u này nh壱p gói ‘awt’. Gói này dùng đ吋 t衣o m瓜t đ嘘i t逢嬰ng GUI. 雲 đây java là tên c栄a
th逢 m映c ch泳a t医t c違 các gói ‘awt’. Ký hiêu “*” ch雨 t医t c違 các l噂p thu瓜c gói này.
Trong java, t医t c違 các mã, bao g欝m các bi院n và cách khai báo nên đ逢嬰c th詠c hi羽n trong ph衣m
vi m瓜t l噂p. B荏i v壱y, t瑛ng khai báo l噂p đ逢嬰c ti院n hành sau m瓜t phát bi吋u nh壱p. M瓜t ch逢挨ng
trình đ挨n gi違n có th吋 ch雨 có m瓜t vài l噂p. Nh英ng l噂p này có th吋 m荏 r瓜ng thành các l噂p khác.
M厩i phát bi吋u đ隠u đ逢嬰c k院t thúc b荏i d医u ch医m ph違y “;”. Ch逢挨ng trình còn có th吋 bao g欝m
các ghi chú, ch雨 d磯n. Khi d鵜ch, ch逢挨ng trình d鵜ch s胤 t詠 lo衣i b臼 các ghi chú này.
DTng c¬ bVn cてa mじt lずp đ⇔ぢc xác đおnh nh⇔ sau :
Class classname
{
/* Aây là dòng ghi chú*/
int num1,num2; // Khai báo bixn vずi các dXu phVy giのa các bixn
Show()
{
// Method body
statement (s); // Kxt thúc bぞi dXu chXm phVy
}
}
“Token” là đ挨n v鵜 riêng l飲, nh臼 nh医t, có ý ngh┄a đ嘘i v噂i trình biên d鵜ch c栄a m瓜t ch逢挨ng trình
Java. M瓜t ch逢挨ng trình java là t壱p h嬰p c栄a các “token”
Chöông trình ñaøo taïo kyõ thuaät vieân quoác teá
Core Java
2 Aptech 9/2002
Các “token” đ逢嬰c chia thành n<m lo衣i:
Ü A鵜nh danh (identifiers): Dùng đ吋 th吋 hi羽n tên bi院n, ph逢挨ng th泳c, ho員c các l噂p.
Ch逢挨ng trình biên d鵜ch s胤 xác đ鵜nh các tên này là duy nh医t trong ch逢挨ng trình. Khi
khai báo đ鵜nh danh c亥n l逢u ý các đi吋m sau đây :
̇ M厩i đ鵜nh danh đ逢嬰c b逸t đ亥u b茨ng m瓜t ch英 cái, m瓜t ký t詠 g衣ch d逢噂i hay d医u
đôla ($). Các ký t詠 ti院p theo có th吋 là ch英 cái, ch英 s嘘, d医u $ ho員c m瓜t ký t詠
đ逢嬰c g衣ch d逢噂i.
̇ M厩i đ鵜nh danh ch雨 đ逢嬰c ch泳a hai ký t詠 đ員c bi羽t, t泳c là ch雨 đ逢嬰c ch泳a m瓜t ký t詠
g衣ch d逢噂i và m瓜t ký t詠 d医u $. Ngoài ra không đ逢嬰c phép s穎 d映ng b医t k┻ ký t詠
đ員c bi羽t nào khác.
̇ Các đ鵜nh danh không đ逢嬰c s穎 d映ng d医u cách “ ” (space).
Ü T瑛 khoá/t瑛 d詠 phòng (Keyword/Reserve Words): M瓜t s嘘 đ鵜nh danh đã đ逢嬰c Java xác
đ鵜nh tr逢噂c. Ng逢運i l壱p trình không đ逢嬰c phép s穎 d映ng chúng nh逢 m瓜t đ鵜nh danh. Ví d映
‘class’, ‘import’ là nh英ng t瑛 khoá.
Ü Ký t詠 phân cách (separator): Thông báo cho trình biên d鵜ch vi羽c phân nhóm các ph亥n
t穎 c栄a ch逢挨ng trình. M瓜t vài ký t詠 phân cách c栄a java đ逢嬰c ch雨 ra d逢噂i đây:
{ } ; ,
Ü Nguyên d衣ng (literals): Là các giá tr鵜 không đ鰻i trong ch逢挨ng trình. Nguyên d衣ng có
th吋 là các s嘘, chu厩i, các ký t詠 ho員c các giá tr鵜 Boolean. Ví d映 21, ‘A’, 31.2, “This is a
sentence” là nh英ng nguyên d衣ng.
Ü Các toán t穎: Các quá trình xác đ鵜nh, tính toán đ逢嬰c hình thành b荏i d英 li羽u và các đ嘘i
t逢嬰ng. Java có m瓜t t壱p l噂n các toán t穎. Chúng ta s胤 th違o lu壱n chi ti院t 荏 ch逢挨ng này.
3.2 Ch逢挨ng trình JAVA đ亥u tiên
Chúng ta hãy b逸t đ亥u t瑛 ch逢挨ng trình Java c鰻 đi吋n nh医t v噂i m瓜t 泳ng d映ng đ挨n gi違n. Ch逢挨ng
trình sau đây cho phép hi吋n th鵜 m瓜t thông đi羽p:
Ch⇔¬ng trình 3.1
// This is a simple program called “First.java”
class First
{
public static void main(String args[])
{
System.out.println(“My first program in Java”);
}
}
Tên file đóng vai trò r医t quan tr丑ng trong Java. Ch逢挨ng trình biên d鵜ch Java ch医p nh壱n ph亥n
m荏 r瓜ng .java. Trong Java các mã c亥n ph違i gom thành các l噂p. B荏i v壱y tên l噂p và tên file có
th吋 trùng nhau. Do đó Java phân bi羽t r衣ch ròi ch英 in hoa và ch英 in th逢運ng (case-sensitive).
Nói chung tên l噂p và tên file nên khác nhau. Ví d映 tên file ‘First’ và ‘first’ là hai file khác
nhau.
Chöông trình ñaøo taïo kyõ thuaät vieân quoác teá
Core Java
Aptech 9/2002 3
A吋 biên d鵜ch mã ngu欝n, ta x穎 d映ng trình biên d鵜ch java. Trình biên d鵜ch xác đ鵜nh tên c栄a file
ngu欝n t衣i dòng l羽nh nh逢 mô t違 d逢噂i đây:
C:\jdk1,2,1\bin>javac First.Java
Trình d鵜ch java t衣o ra file First.class ch泳a các mã “bytecodes”. Nh英ng mã này ch逢a th吋 th詠c
thi đ逢嬰c. A吋 ch逢挨ng trình th詠c thi đ逢嬰c ta c亥n dùng trình thông d鵜ch “java interpreter”
L羽nh đ逢嬰c th詠c hi羽n nh逢 sau:
C:\jdk1,1,1\bin>java First
K院t qu違 s胤 hi吋n th鵜 trên màn hình nh逢 sau:
My first program in Java
3.2.1 Phân tích ch逢挨ng trình đ亥u tiên
// This is a simple program called “First.java”
Ký hi羽u “// ” dùng đ吋 thuy院t minh dòng l羽nh. Trình biên d鵜ch s胤 b臼 qua dòng thuy院t minh này.
Java còn h厩 tr嬰 thuy院t minh nhi隠u dòng. Lo衣i thuy院t minh này có th吋 b逸t đ亥u v噂i /* và k院t
thúc v噂i */
/*This is a comment that
extends to two lines*/
/ *This is
a multi line
comment */
Dòng k院 ti院p khai báo l噂p có tên ‘First’. A吋 t衣o m瓜t l噂p thêm ta b逸t đ亥u v噂i t瑛 khoá ‘class’,
k院 đ院n là tên l噂p (và c┡ng chính là tên file).
class First
Tên l噂p nói chung nên b逸t đ亥u b茨ng ch英 in hoa.
T瑛 khoá ‘class’ khai báo đ鵜nh ngh┄a l噂p. ‘First’ là đ鵜nh danh cho tên c栄a l噂p. M瓜t đ鵜nh ngh┄a
l噂p tr丑n v姻n không n茨m gi英a hai ngo員c móc (curly braces) đóng và m荏. Các ngo員c này đánh
d医u b逸t đ亥u và k院t thúc m瓜t kh嘘i các l噂p đ逢嬰c đ鵜nh nghiã.
public static void main(String args[ ])
Aây là ph逢挨ng th泳c chính, t瑛 đây ch逢挨ng trình b逸t đ亥u vi羽c th詠c thi c栄a mình. T医t c違 các 泳ng
d映ng java đ隠u s穎 d映ng m瓜t ph逢挨ng pháp “main” này. Chúng ta s胤 tìm hi吋u t瑛ng t瑛 trong phát
bi吋u này.
T瑛 khoá ‘public’ là m瓜t ch雨 đ鵜nh truy xu医t. Nó cho bi院t thành viên c栄a l噂p có th吋 đ逢嬰c truy
xu医t t瑛 b医t c泳 đâu trong ch逢挨ng trình. Trong tr逢運ng h嬰p này, ph逢挨ng th泳c “main” đ逢嬰c khai
báo ‘public’, b荏i v壱y JVM có th吋 truy xu医t ph逢挨ng th泳c này.
T瑛 khoá ‘static’ cho phép main đ逢嬰c g丑i t噂i mà không c亥n t衣o ra m瓜t th吋 hi羽n (instance) c栄a
l噂p. Nh逢ng trong tr逢運ng h嬰p này, b違n copy c栄a ph逢挨ng th泳c main đ逢嬰c phép t欝n t衣i trên b瓜
nh噂, th壱m chí n院u không có m瓜t th吋 hi羽n c栄a l噂p đó đ逢嬰c t衣o ra. Ai隠u này r医t quan tr丑ng vì
JVM tr逢噂c tiên g丑i ph逢挨ng th泳c main đ吋 th詠c thi ch逢挨ng trình. Vì lý do này ph逢挨ng th泳c
main c亥n ph違i là t┄nh (static). Nó không ph映 thu瓜c vào các th吋 hi羽n c栄a l噂p đ逢嬰c t衣o ra.
T瑛 khoá ‘void’ thông báo cho máy tính bi院t r茨ng ph逢挨ng th泳c s胤 không tr違 l衣i b医t c泳 giá tr鵜
nào khi th詠c thi ch逢挨ng trình.
Chöông trình ñaøo taïo kyõ thuaät vieân quoác teá
Core Java
4 Aptech 9/2002
Ph逢挨ng th泳c ‘main()’ s胤 th詠c hi羽n m瓜t s嘘 tác v映 nào đó, nó là đi吋m m嘘c mà t瑛 đó t医t c違 các
泳ng d映ng Java đ逢嬰c kh荏i đ瓜ng.
‘String args[]’ là tham s嘘 dùng trong ph逢挨ng th泳c ‘main’. Các bi院n s嘘 trong d医u ngo員c đ挨n
nh壱n t瑛ng thông tin đ逢嬰c chuy吋n vào ‘main’. Nh英ng bi院n này là các tham s嘘 c栄a ph逢挨ng
th泳c. Th壱m chí ngay khi không có m瓜t thông tin nào đ逢嬰c chuy吋n vào ‘main’, ph逢挨ng th泳c
v磯n đ逢嬰c th詠c hi羽n v噂i các d英 li羽u r厩ng – không có gì trong d医u ngo員c đ挨n.
‘args[]’ là m瓜t m違ng ki吋u “String”. Các đ嘘i s嘘 (arguments) t瑛 các dòng l羽nh đ逢嬰c l逢u vào
m違ng. Mã n茨m gi英a d医u ngo員c móc c栄a ‘main’ đ逢嬰c goi là ‘method block’. Các phát bi吋u
đ逢嬰c th詠c thi trong ‘main’ c亥n đ逢嬰c ch雨 rõ trong kh嘘i này.
System.out.println(“My first program in Java”);
Dòng l羽nh này hi吋n th鵜 chu厩i “My first program in Java” trên màn hình. Phát bi吋u ‘println()’
t衣o ra m瓜t c鰻ng xu医t (output). Ph逢挨ng th泳c này cho phép hi吋n th鵜 m瓜t chu厩i n院u chu厩i đó
đ逢嬰c đ逢a vào v噂i s詠 tr嬰 giúp c栄a ‘System.out’. 雲 đây ‘System’ là m瓜t l噂p đã đ鵜nh tr逢噂c, nó
cho phép truy nh壱p vào h羽 th嘘ng và ‘out’ là m瓜t chu厩i xu医t đ逢嬰c k院t n嘘i v噂i d医u nh逸c
(console).
3.2.2 Truy隠n đ嘘i s嘘 trong dòng l羽nh
Các mã sau đây cho ta th医y các tham s嘘 (argument) c栄a các dòng l羽nh đ逢嬰c ti院p nh壱n nh逢 th院
nào trong ph逢挨ng th泳c ‘main’.
Program 3.2
class Pass{
public static void main(String parameters[])
{
System.out.println(“This is what the main method received”);
System.out.println(parameters [0 ]);
System.out.println(parameters [1 ]);
System.out.println(parameters [2 ]);
}
}
Hình v胤 sau đây mô t違 các đ嘘i t逢嬰ng đ逢嬰c th詠c hi羽n t衣i các dòng l羽nh nh逢 th院 nào
Chöông trình ñaøo taïo kyõ thuaät vieân quoác teá
Core Java
Aptech 9/2002 5
Khi g員p m瓜t d医u tr逸ng (space), có th吋 hi吋u m瓜t chu厩i đ逢嬰c k院t thúc. Nh逢ng thông th逢運ng m瓜t
chu厩i đ逢嬰c k院t thúc khi g員p d医u nháy kép. Hình v胤 d逢噂i đây s胤 mô t違 đì隠u này.
3.3 C挨 b違n v隠 ngôn ng英 Java
Ch逢挨ng trình là t壱p h嬰p nh英ng hành đ瓜ng đ逢嬰c s逸p x院p theo m瓜t tr壱t t詠 nh医t đ鵜nh đ吋 máy tính
có th吋 th詠c hi羽n đ逢嬰c. Ch逢挨ng trình có th吋 đ逢嬰c coi nh逢 m瓜t tài li羽u h逢噂ng d磯n có ch泳a các
thành ph亥n đ逢嬰c g丑i là các bi院n và danh sách các h逢噂ng d磯n đ逢嬰c g丑i là phát bi吋u. Các phát
bi吋u nói cho máy tính bi院t c亥n ph違i làm gì v噂i các bi院n.
Bi院n là các giá tr鵜 có th吋 đ逢嬰c thay đ鰻i ph映 thu瓜c vào đi隠u ki羽n ho員c thông tin đ逢嬰c nh壱p vào
máy tính. Các bi院n đ逢嬰c xác đ鵜nh nh運 các ki吋u d英 li羽u. Ki吋u d英 li羽u là m瓜t t壱p các d英 li羽u v噂i
các giá tr鵜 có các đ員c tính đã đ逢嬰c xác đ鵜nh tr逢噂c.
Các phát bi吋u d衣ng đi隠u khi吋n quy院t đ鵜nh vi羽c th詠c thi t瑛ng ph亥n trong ch逢挨ng trình. Chúng
còn quy院t đ鵜nh tr壱t t詠 vi羽c th詠c thi ch逢挨ng trình và s嘘 l亥n ch逢挨ng trình c亥n th詠c hi羽n. Giá tr鵜
n衣p vào bi院n có th吋 đ鵜nh h逢噂ng cho ch逢挨ng trình ho衣t đ瓜ng.
Chúng ta hãy b逸t đ亥u v噂i nh英ng khái ni羽m n隠n t違ng c栄a ngôn ng英 Java nh逢 l噂p và ph逢挨ng
th泳c, ki吋u d英 li羽u, bi院n, toán t穎 và c医u trúc đi隠u khi吋n.
3.4 Các l噂p đ嘘i t逢嬰ng trong Java
Trong ngôn ng英 Java, l噂p là m瓜t đ挨n v鵜 m磯u có ch泳a các s嘘 li羽u và các mã liên quan đ院n m瓜t
th詠c th吋 nào đó. Chúng hình thành n隠n t違ng c栄a toàn b瓜 ngôn ng英 Java. D英 li羽u ho員c mã
ngu欝n đ逢嬰c vi院t ra luôn đ員t bên trong m瓜t l噂p. Khi xác đ鵜nh m瓜t l噂p, b衣n th詠c ch医t xác đ鵜nh
m瓜t ki吋u d英 li羽u. Lo衣i 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 t逢嬰ng”. A嘘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詠.
B衣n còn có th吋 đ鵜nh ngh┄a m瓜t l噂p bên trong. Aây là m瓜t l噂p ki吋u x院p l欝ng vào 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吋 hi羽n thành ph亥n c栄a th吋 hi羽n bao ph栄 chúng.
3.4.1 Khai báo l噂p
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 xây d詠ng nên l噂p đó.
Cú pháp:
Chöông trình ñaøo taïo kyõ thuaät vieân quoác teá
Core Java
6 Aptech 9/2002
class name
{ 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 bixn
variablename - Tên cてa bixn
met_datatype - Kiあu dの liうu trV vz cてa ph⇔¬ng thとc
methodname - Tên cてa ph⇔¬ng thとc
parameter_lits – Các tham sぐ đ⇔ぢc dùng trong ph⇔¬ng thとc
Hình 3.3 mô t違 b茨ng hình 違nh l噂p “Khách hàng”. Nh英ng đ員c đi吋m c栄a l噂p xác đ鵜nh các kho違n
m映c d英 li羽u đ逢嬰c l逢u c医t, và các hành vi xác đ鵜nh các ph逢挨ng th泳c đ逢嬰c tính đ院n. A嘘i t逢嬰ng
c栄a l噂p này s胤 l逢u l衣鵜 các chi ti院t cá nhân cu違 khách hàng.
Hình 3.3
Trong l噂p “Khách hàng”, các kho違n m映c d英 li羽u bao g欝m:
Ü Tên khách hàng
Ü A鵜a ch雨
Ü Ki吋u xe
Ü Tên ng逢運i bán hàng
Các ph逢挨ng th泳c g欝m:
Ü Ch医p thu壱n các chi ti院t c栄a khách hàng