Membandingkan dua Object

Saya ada tebak tebakkan, code no 1 dan code no 2 menurut Anda result nya apa?

1.

Long a = 127L;
Long b = 127L;
System.out.println("a == b is " + (a==b));

2.

Long c = 128L;
Long d = 128L;
System.out.println("c == d is " + (c==d));

resultnya adalah sebagai berikut

a == b is true
c == d is false

nah loo…. penjelasannya adalah sebagai berikut.

Long adalah tipe data object, bukan primitif. Dengan menggunakan == anda membandingkan nilai nilai reference nya.
Untuk membandingkan tipe data object, gunakanlah

c.equals(d)

Namun jika Anda ingin tetap menggunakan ==, ubah lah terlebih dahulu menjadi tipe data primitif, menggunakan

c.longValue() == d.longValue();

Kemudian dari pertanyaan coding 1 dan 2, kenapa koding 1 hasilnya true, dan koding 2 hasilnya false. Pdahal sama sama menggunakan ==. Nah untuk type-type Autobox mengimplementasikan flyweight pattern, namun hanya untuk range nilai -128 -> 127. Untuk Autoboxing dan flyweight pattern akan saya jelasan di posting berikutnya.

About rile

lazy cat

Posted on January 21, 2014, in Java. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: