7.1 Phép gán nhi u l n
ề ầ
B n có th khi n cho nhi u l nh gán ch t i cùng m t bi n; mà hi u qu c a nó là nh m thay th giá tr
ạ
ể
ế
ề ệ
ỉ ớ
ộ
ế
ệ
ả ủ
ằ
ế
ị
cũ b ng giá tr m i.
ằ
ị ớ
int
liz = 5;
System.out.print(liz);
liz = 7;
System.out.println(liz);
K t qu c a ch
ng trình này b ng
ế
ả ủ
ươ
ằ 57, vì l n đ u tiên khi in
ầ
ầ
liz bi n này có giá tr b ng 5, còn l n th
ế
ị ằ
ầ
ứ
hai thì bi n có giá tr b ng 7.
ế
ị ằ
Hình th c
ứ gán nhi u l n
ề ầ nh th này là lí do mà tôi mô t các bi n nh là
ư ế
ả
ế
ư h p ch a
ộ
ứ giá tr . Khi b n
ị
ạ
gán m t giá tr vào cho bi n, b n thay đ i n i dung c a h p ch a, nh hình v sau:
ộ
ị
ế
ạ
ổ ộ
ủ
ộ
ứ
ư ở
ẽ
Khi có nhi u phép gán đ i v i cùng m t bi n, thì r t chú tr ng vi c phân bi t gi a câu l nh gán và đ ng
ề
ố ớ
ộ
ế
ấ
ọ
ệ
ệ
ữ
ệ
ẳ
th c. Vì Java dùng d u
ứ
ấ = cho l nh gán nên ta b lôi cu n vào vi c di n gi i m t câu l nh nh
ệ
ị
ố
ệ
ễ
ả
ộ
ệ
ư a = b là câu
l nh đ ng th c. Th t ra không ph i v y!
ệ
ẳ
ứ
ậ
ả ậ
Tr
c h t, đ ng th c thì có tính giao hoán, còn l nh gán thì không. Ch ng h n trong toán h c, n u
ướ ế
ẳ
ứ
ệ
ẳ
ạ
ọ
ế a = 7
thì 7 = a. Nh ng trong Java
ư
a = 7; l i là m t l nh gán h p l , còn
ạ
ộ ệ
ợ ệ
7 = a; thì không.
H n n a, trong toán h c, m t đ ng th c thì luôn đúng. N u bây gi
ơ
ữ
ọ
ộ ẳ
ứ
ế
ờ a = b, thì a s luôn b ng
ẽ
ằ b. Trong
Java, m t l nh gán có th làm cho hai bi n b ng nhau, nh ng không có gì b t bu c chúng b ng nhau
ộ ệ
ể
ế
ằ
ư
ắ
ộ
ằ
mãi!
int
a = 5;
int
b = a;
// bây giờ thì a bằng b
a = 3;
// a không còn bằng b nữa
Dòng l nh th ba đã thay đ i giá tr c a
ệ
ứ
ổ
ị ủ a mà không làm thay đ i giá tr c a
ổ
ị ủ b, vì v y chúng không còn
ậ
b ng nhau. M t s ngôn ng l p trình có dùng kí hi u khác cho phép gán, nh
ằ
ộ ố
ữ ậ
ệ
ư <- ho c
ặ :=, đ tránh s
ể
ự
nh m l n này.
ầ
ẫ
M c dù phép gán nhi u l n th
ng có ích, so b n nên c n th n khi dùng. N u giá tr c a các bi n thay
ặ
ề ầ
ườ
ạ
ẩ
ậ
ế
ị ủ
ế
đ i th
ng xuyên thì có có th khi n cho mã l nh khó đ c và g l i.
ổ
ườ
ể
ế
ệ
ọ
ỡ ỗ
7.2 Câu l nh
ệ
while
Máy tính th
ng đ
c dùng đ t đ ng hóa các thao tác có tính l p l i. Th c hi n nh ng thao tác l p l i
ườ
ượ
ể ự ộ
ặ ạ
ự
ệ
ữ
ặ ạ
này mà không ph m l i là đi u mà máy tính làm t t còn chúng ta làm r t d .
ạ
ỗ
ề
ố
ấ ở
Ta đã th y các ph
ng th c nh
ấ
ươ
ứ
ư countdown và factorial trong đó dùng đ quy đ th c hi n l p. Quá
ệ
ể ự
ệ ặ
trình này đ
c g i là
ượ ọ
phép l p
ặ . Java có nh ng đ c đi m ngôn ng giúp cho vi c vi t các ph ng th c
ữ
ặ
ể
ữ
ệ
ế
ươ
ứ
nêu trên m t cách d dàng h n. ch
ng này ta xem xét câu l nh
ộ
ễ
ơ Ở ươ
ệ while. V sau ( M c
ề
ở ụ 12.4) ta xét đ n
ế