THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 124

if

(card1 == card2) {

System.out.println(

"card1 và card2 giống hệt nhau."

);

}

Các tham chi u đ n cùng đ i t

ng thì

ế

ế

ố ượ

gi ng h t

nhau. Còn các tham chi u đ n các đ i t ng v i d

ế

ế

ố ượ

ớ ữ

li u nh nhau thì s

ư

t ng đ ng

ươ

v i nhau.

Đ ki m tra s t

ng đ ng, ng

i ta th

ng vi t m t ph

ng th c có tên g i ki u nh

ể ể

ự ươ

ườ

ườ

ế

ươ

ư sameCard.

public static boolean

sameCard(Card c1, Card c2) {

return

(c1.suit == c2.suit && c1.rank == c2.rank);

}

Sau đây là m t ví d đ t o nên hai đ i t

ng có d li u gi ng nhau, r i dùng

ụ ể ạ

ố ượ

ữ ệ

sameCard đ ki m tra

ể ể

xem li u chúng có t

ng đ ng không:

ươ

Card card1 =

new

Card(1, 11);

Card card2 =

new

Card(1, 11);

if

(sameCard(card1, card2)) {

System.out.println(

"card1 and card2 tuong dong nhau."

);

}

N u các tham chi u gi ng nhau thì chúng t

ng đ ng. Song n u chúng t

ng đ ng thì ch a ch c chúng

ế

ế

ươ

ế

ươ

ư

đã gi ng h t nhau.

đây,

card1 và card2 t

ng đ ng nh ng không gi ng h t, cho nên s đ tr ng thái s nh sau:

ươ

ư

ơ ồ ạ

ư

S đ này s trông th nào n u

ơ ồ

ế

ế card1 và card2 gi ng h t nhau?

M c

Ở ụ 8.10, tôi đã nói r ng b n không nên dùng toán t

ử == đ i v i

ố ớ String vì nó s không ho t đ ng

ạ ộ

theo ý mình. Thay vì vi c so sánh n i dung c a các

String (so sánh t

ng đ ng), nó l i đi ki m tra xem

ươ

hai String này có ph i cùng đ i t

ng (gi ng h t) không.

ố ượ

13.5 Ph

ng th c

ươ

ứ compareCard

V i nh ng ki u nguyên th y, các toán t đi u ki n so sánh hai giá tr r i quy t đ nh xem cái nào l n hay

ử ề

ị ồ

ế ị

nh h n các kia. Nh ng toán t nh v y (

ỏ ơ

ư ậ < và > cùng nh ng cái khác) không ho t đ ng đ c v i ki u

ạ ộ

ượ ớ

đ i t

ng. V i các chu i, Java cung c p m t ph

ng th c

ố ượ

ươ

ứ compareTo. Còn v i

ớ Cards thì ta ph i t vi t

ả ự ế

ph

ng th c riêng, mà ta s g i là

ươ

ẽ ọ

compareCard. Sau này, ta s dùng ph

ng th c này đ s p x p m t

ươ

ể ắ

ế

c bài.

Có nh ng t p h p đ

c x p th t hoàn toàn, theo nghĩa là b n có th so sánh hai ph n t b t kì trong

ượ ế

ứ ự

ầ ử ấ

đó đ bi t đ

c ph n t nào l n h n. L i có nh ng t p h p không s p x p đ

c, theo nghĩa là ch ng có

ể ế ượ

ầ ử

ơ

ế

ượ

nghĩa lý gì đ nói r ng ph n t này l n h n ph n t kia. Các s nguyên và s ph y đ ng là lo i th t

ầ ử

ơ

ầ ử

ứ ự