Advanced Class

advertisement
Kelas Lanjut
bagian 1
Topik
•
•
•
•
•
•
•
•
Object class
String
StringBuffer
Math class
Wrapper class
Static
Static initializer
Final
java.lang
• Compiler java secara otomatis akan mengimport semua
class dalam package java.lang ke dalam semua file
sumber (source file).
• Beberapa class yang penting pada package java.lang,
yaitu :
– Object
– Math
– The wrapper classes
– String
– StringBuffer
The Object Class
• Class Object adalah akar dari semua class yang ada di
Java
• Deklarasi class tanpa extends, secara implisit pasti
ditambahkan “extends Objects”
– public class Employee { }
– Sama dengan
– public class Employee extends Objects { }
• Methods yang dipunyai :
– wait(), notify(), notifyAll(), equals(), toString()
equals()
public boolean equals(Object object)
• Untuk class Object :
Fungsi methods equals() sama dengan operator ==,
yaitu membandingkan alamat (reference) – nya.
• Pembandingan object d1 dan d2
– Menggunakan ==
• if (d1==d2)
– Menggunakan equals
• if (d1.equals(d2))
Tanggalku.java
• public class Tanggalku {
•
private int hari;
•
private int bulan;
•
private int tahun;
•
public Tanggalku(int hari, int bulan, int tahun) {
•
this.hari=hari;
•
this.bulan=bulan;
•
this.tahun=tahun;
•
}
• }
TestEquals.java
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
public class TestEquals {
public static void main(String [] args) {
Tanggalku tanggal1=new Tanggalku(14,9,1970);
Tanggalku tanggal2=new Tanggalku(14,9,1970);
if (tanggal1==tanggal2)
System.out.println("tanggal1 identik dengan tanggal2");
else
System.out.println("tanggal1 tidak identik dengan tanggal2");
if (tanggal1.equals(tanggal2))
System.out.println("tanggal1 equal dengan tanggal2");
else
System.out.println("tanggal1 tidak equal dengan tanggal2");
System.out.println("set tanggal1==tanggal2");
tanggal1=tanggal2;
if (tanggal1==tanggal2)
System.out.println("tanggal1 identik dengan tanggal2");
else
System.out.println("tanggal1 tidak identik dengan tanggal2");
if (tanggal1.equals(tanggal2))
System.out.println("tanggal1 equal dengan tanggal2");
else
System.out.println("tanggal1 tidak equal dengan tanggal2");
}
}
Meng-overide methods
equals()
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
public class Tanggalku {
private int hari;
private int bulan;
private int tahun;
public Tanggalku(int hari, int bulan, int tahun) {
this.hari=hari;
this.bulan=bulan;
this.tahun=tahun;
}
public boolean equals(Object o) {
boolean result = false;
if ((o!=null) && (o instanceof Tanggalku)) {
Tanggalku d=(Tanggalku) o;
if ((hari==d.hari) && (bulan==d.bulan) && (tahun==d.tahun))
result=true;
}
return result;
}
}
Beda == dan equals
untuk data String
• ==
Membandingkan reference (alamat) nya.
• equals
Membandingkan content (isi) - nya
Penggunaan == dan equals untuk
variabel bertipe string
•
•
•
•
•
•
•
•
•
•
•
•
•
public class StringLiteral {
public static void main(String [] args) {
String java="Java";
String va="va";
System.out.println(java=="Java");
System.out.println(Other.java1==java);
System.out.println(java==("Ja"+"va"));
System.out.println(java==("Ja"+va));
}
}
class Other {
static String java1="Java";
}
trim() dan replace()
• public class TrimReplace {
•
public static void main(String [] args) {
•
String belajar=" bahasa java";
•
System.out.println(belajar);
•
belajar=belajar.trim();
•
System.out.println(belajar);
•
belajar=belajar.replace('v','w');
•
System.out.println(belajar);
•
}
• }
StringBuffer methods
•
•
•
•
•
•
•
•
•
•
•
•
public class cobaStringBuffer{
public static void main(String [] args) {
StringBuffer sbuf=new StringBuffer("12345");
System.out.println(sbuf);
sbuf.reverse();
System.out.println(sbuf);
sbuf.insert(3,"aaa");
System.out.println(sbuf);
sbuf.append("zzz");
System.out.println(sbuf);
}
}
Math Class
• Berisi methods-methods yang digunakan untuk operasi
matematika
Methods dalam
Math Class
Wrapper Classes
• is simply a class that encapsulates a single, immutable
value.
– Integer class wraps up an int value,
– Float class wraps up a float value.
Tipe data primitif dan Wrapper
Wrapper Class
• Illegal
Vector vec = new Vector();
boolean boo = false;
vec.add(boo); // Illegal
Wrapper class
• Solusi :
Vector vec = new Vector();
boolean boo = false;
Boolean wrapper = new Boolean(boo);
vec.add(boo); // Legal
Wrapper Classes
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
boolean primitiveBoolean = true;
Boolean wrappedBoolean =new Boolean(primitiveBoolean);
byte primitiveByte = 41;
Byte wrappedByte = new Byte(primitiveByte);
char primitiveChar = ‘M’;
Character wrappedChar = new Character(primitiveChar);
short primitiveShort = 31313;
Short wrappedShort = new Short(primitiveShort);
int primitiveInt = 12345678;
Integer wrappedInt = new Integer(primitiveInt);
long primitiveLong = 12345678987654321L;
Long wrappedLong = new Long(primitiveLong);
float primitiveFloat = 1.11f;
Float wrappedFloat = new Float(primitiveFloat);
double primitiveDouble = 1.11111111;
Double wrappedDouble =new Double(primitiveDouble);
equals() dan == pada
wrapper class
• Method equals() membandingkan content-nya
• == membandingkan alamatnya.
Static
• Static digunakan sebagai modifier pada:
– Variable
– Method
– Inner class
• Static mengindikasikan bahwa atribut atau
method tersebut milik class.
• Anggota class yang bersifat static ini
sering disebut dengan “class members”
(class variable dan class methods).
• Contoh penggunaan : static int bil=1;
Class Variable
• Class variable bersifat milik bersama dalam arti
semua instance/obyek dari class yang sama akan
mempunyai class variable milik bersama.
• Class variable mirip dengan global variable.
Class Variable
• Tanpa membuat obyeknya terlebih dahulu, kita bisa
mengakses class variable dari luar class (bila variabel
tersebut bertipe public)
Class Method
• Tanpa membuat obyeknya terlebih dahulu, kita bisa
mengakses class method dari luar class (bila variabel
tersebut bertipe public)
Static : Ingat !!!
• Static method bisa diakses dari luar class tanpa
harus membuat obyeknya terlebih dahulu.
• Konsekuensi: semua variabel atau method yang
diakses oleh static method tersebut harus
bersifat static juga.
• Jika static method mengakses non-static method
dan non-static variable maka akan menyebabkan
compile error.
Error !!
pulic class Count{
public int serialNumber; // non-static
private static int counter = 0;
}
public static int getSerialNumber() {
return serialNumber; // compile error
}
Sukses !!!
• public class Count{
•
public int serialNumber; // non-static
•
public static int counter = 0;
•
•
•
• }
public static int getSerialNumber() {
return counter; // compile sukses
}
Static Initializer
• Static Initializer yaitu block yang dideklarasikan
static pada suatu class yang letaknya tidak berada
dalam deklarasi method.
• Static block ini dieksekusi hanya sekali, yaitu
ketika class dipanggil pertama kali.
• Jika pada statement class terdapat lebih dari satu
static initializer maka urutan eksekusi
berdasarkan mana yang dideklarasikan lebih dulu.
• Static block biasanya digunakan untuk
menginisialisasi static attribute (class variable).
Contoh static initializer
Penggunaan
class, method dan variabel final
• Final class tidak bisa dibuat subclass.
(java.lang.String merupakan final class)
• Final method tidak bisa di override.
• Final variable bersifat konstan.
• Final variable hanya bisa dideklarasikan
sekali saja, assignment final variable
tidak harus pada saat dideklarasikan 
“blank final variable”.
– Blank final instance variable harus di set di tiap
constructor.
– Blank final variable pada method harus di set
pada method body sebelum digunakan.
Contoh : pengunaan final
Final pada variabel :
Object
• Referensi/alamat harus tetap,
state dari object boleh dirubah
1.
class Walrus {
int weight;
Walrus(int w) { weight = w; }
2.
3.
4. }
5.
6. class Tester {
7.
final Walrus w1 = new Walrus(1500);
8.
void test() {
9.
w1 = new Walrus(1400); // Illegal
10.
w1.weight = 1800; // Legal
11.
}
12. }
Download