Java numbers

download Java numbers

If you can't read please download the document

Transcript of Java numbers

  • 1. Java NumbersAmmar Shadiq [email protected] http://ammarshadiq.web.id Pelatihan Java Universitas Pendidikan Indonesia 10-April-2010 1 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010

2. Java Numbers Sebelum kita mendalami tentang segala sesuatunya tentang Numbers pada bahasa pemrograman java, mari kita bahas tentang tipe data primitif.Tipe data primitif Bahasa pemrograman java adalah bahasa pemrograman yang bersifat statically-typed, yang berarti seluruh variabel harus dideklarasikan sebelum dapat digunakan. Ini melibatkan mendeklarasikan tipe variabel dan nama variabel, seperti : int gear = 1; Melakukan hal diatas memberitahu program bahwa ada sebuah variabel bernama gear, yang menampung data numerik dan memiliki nilai awal 1. Tipe data sebuah variabel menentukan nilai yang dapat di tampungnya, dan operasi yang dapat dilakukan pada variabel tersebut. Sebagai tambahan dari int, bahasa pemrograman java menyediakan tujuh tipe data primitif lainnya. Tipe data primitif telah didefinisikan sebelumnya oleh bahasa pemrograman dan dinamakan dengan reserved keyword. Nilai variabel tipe data primitif tidak berbagi state dengan nilai variabel tipe data primitif lainnya. Kedelapan tipe data primitif yang disediakan oleh bahasa pemrograman java adalah : byte: tipe data byte (8-bit signed) adalah tipe angka yang memiliki batasan nilai minimum-128 dan nilai maksimum 127. Tipe data byte dapat digunakan untuk menghematpenyimpanan memory pada array berukuran besar, pada situasi dimana penghematanmemory dibutuhkan. Tipe data byte juga dapat digunakan sebagai pengganti int agar batasannilainya dapat membantu untuk memperjelas batasan nilai pada kode perogram anda; faktabahwa sebuah batasan nilai variabel dapat berguna sebagai dokumentasi. short: tipe data short (16-bit signed) adalah tipe angka yang memiliki batasan nilaiminimum -32.768 dan nilai maksimum 32.767. Sama seperti byte: anda dapat menggunakanshort untuk menghemat memory pada array berukuran besar, pada situasi dimanapenghematan memory dibutuhkan. int: tipe data int (32-bit signed) adalah tipe angka yang memiliki batasan nilai minimum-2.147.483.648 dan nilai maksimum 2.147.483.647. untuk nilai integral (tanpa koma), tipedata ini adalah pilihan umum kecuali ada kebutuhan (seperti diatas) untuk memilih tipe datalain. Tipe data ini berukuran cukup besar untuk kebutuhan mayoritas pada program anda,tetapi jika anda membutuhkan nilai yang lebih besar, anda dapat menggunakan tipe datalong. long: tipe data long (64-bit signed) adalah tipe angka yang memiliki batasan nilai minimum-9.223.372.036.854.775.808 dan nilai maksimum 9.223.372.036.854.775.807. Gunakan tipedata ini saat anda membutuhkan nilai yang lebih besar dari batas nilai yang dimiliki tipe dataint. float: tipe data float adalah floating point single-precision 32-bit IEEE 754. Tipe data inimemiliki batasan nilai diluar diskusi kita disini, anda dapat melihat spesifikasi tipe data inipada spesifikasi bahasa pemrograman java 4.2.3. Seperti rekomendasi pada tipe data bytedan short, gunakan float (daripada double) saat anda membutuhkan penghematan memorypada array berukuran besar yang menyimpan nilai floating point. Tipe data ini tidakseharusnya digunakan untuk menyimpan nilai yang membutuhkan ketepatan tinggi, seperticurrency. Untuk hal tersebut sebaiknya menggunakan kelas java.math.BigDecimal.2 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 3. double: tipe data double adalah floating point single-precision 64-bit IEEE 754. Tipe dataini memiliki batasan nilai diluar diskusi kita disini, anda dapat melihat spesifikasi tipe dataini pada spesifikasi bahasa pemrograman java 4.2.3. Untuk nilai desimal, tipe data ini adalahadalah pilihan umum kecuali ada kebutuhan (seperti diatas) untuk memilih tipe data lain.Seperti diatas, Tipe data ini tidak seharusnya digunakan untuk menyimpan nilai yangmembutuhkan ketepatan tinggi, seperti currency. boolean: tipe data boolean hanya memiliki dua nilai : true dan false. Gunakan tipe data inisebagai flag yang merekam kondisi benar/salah. Tipe data ini menyimpan informasi satu bit,tetapi ukuran tipe data ini adalah sesuatu yang tidak didefinisikan secara jelas. char: tipe data char adalah karakter 16-bit unicode tunggal. Tipe data ini memiliki nilai minimum 'u0000' (atau 0) dan nilai maksimum 'uffff' (atau 65.535). Sebagai tambahan dari delapan tipe data primitif yang dituliskan diatas, bahasa pemrograman java juga menyediakan dukungan spesial untuk rangkaian character melalui kelas java.lang.String. Menuliskan rangkaian karakter didalam kutip dua secara otomatis akan menciptakan objek String. sebagai contoh String s = ini adalah sebuah string; Objek String bersifat immutable, yang berarti sekalinya diciptakan, nilainya tidak dapat diganti. Kelas String secara teknis bukanlah sebuah tipe data primitif, tetapi mempertimbangkan kemudahan yang diberikan oleh bahasa pemrograman, anda mungkin akan berfikir tipe data String sebagai tipe data primitif.Nilai default Tidak selamanya anda harus mendefinisikan sebuah nilai setiap saat sebuah variabel dideklarasikan. Variabel yang dideklarasikan tetapi tidak di inisialisasi akan diberi nilai yang sesuai oleh compiler. Nilai default ini adalah nol atau null, tergantung dari tipe data. Tetapi, bersandar pada nilai default tersebut, umumnya di anggap sebagai cara pemrograman yang buruk. Tabel berikut menyimpulkan nilai-nilai defaut dari tipe data diatas.Data Type Default Value (for fields)byte0short 0int 0long0Lfloat 0.0fdouble0.0dchar'u0000'String (or any object) nullboolean false Variabel lokal sedikit berbeda; compiler tidak pernah menugaskan sebuah nilai default pada variabel lokal yang belum diinisialisasi. Jika anda tidak dapat menginisialisasikan variabel lokal saat pendeklarasian, pastikan anda menugaskan sebuah nilai sebelum mencoba menggunakannya.3 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 4. Mengakses variabel lokal yang belum diinisialisasi akan menghasilkan compile-time error.Literals Anda mungkin memperhatikan bahwa keyword new tidak digunakan pada saat menginisialisasikan variabel bertipe data primitif. Tipe data primitif adalah tipe data khusus yang dibuat sebagai tipe data build-in; tipe data ini tidak diciptakan dari sebuah kelas. Sebuah literal adalah representasi source code dari sebuah nilai tetap; literal direpresentasikan secara langsung kedalam kode anda tanpa membutuhkan komputasi. Seperti ditunjukkan dibawah, diperbolehkan menugaskan sebuah literal kepada sebuah variabel ber tipe data primitif: boolean result = true; char capitalC = 'C'; byte b = 100; short s = 10000; int i = 100000; Literal pada tipe data char dan string dapat berisi karakter Unicode (UTF-16) apapun. Jika editor dan file system anda mengizinkannya, anda dapat menggunakan karakter-karakter seperti itu secara langsung kedalam kode anda. Jika tidak, anda dapat menggunakan Unicode escape seperti 'u0108' (C kapital dengan circumflex), atau Su00ED seu00F1or (S Seor dalam Spanish). Selalu gunakan 'kutip tunggal' untuk literal char dan kutip ganda untuk literal String. Rangkaian Unicode escape dapat digunakan dimanapun dalam sebuah program (seperti pada field name), tidak hanya pada literal char atau string. Bahasa pemrograman java juga menyediakan beberapa rangkaian escape character khusus untuk literal char dan String : b (backspace), t (tab), n (line feed/baris baru), f (form feed), r (carriage return), (kutip ganda), ' (kutip tunggal), dan(backslah).Operator Penugasan, Aritmetik dan UnaryOperator Penugasan sederhana Salah satu operator yang paling banyak anda temui adalah operator penugasan = sederhana. Anda akan menemui banyak operator ini dalam kode-kode bahasa pemrograman java; operator ini menugaskan sebuah nilai pada bagian kanan kepada operand pada bagian kiri:int cadence = 0;int speed = 0;int gear = 1; Operator ini juga dapat digunakan pada objek untuk menugaskan referensi objek.Operator Aritmetik Bahasa pemrograman java menyediakan operator untuk operasi penambahan, pengurangan, perkalian dan pembagian. Operator-operator tersebut pasti anda kenali karena sama dengan simbol seperti pada matematika dasar. Simbol yang munkin baru bagi anda adalah %, yang membagi satu operand oleh operand lain dan mengembalikan nilai sisa dari pembagian tersebut sebagai hasilnya. 4 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 5. +Operator penambahan (juga digunakan dalam penyambungan string) -Operator pengurangan *Operator perkalian /Operator pembagian %Operator sisa pembagian Program berikut, ArithmeticDemo, menguji operatator-operator aritmetik. class ArithmeticDemo { public static void main (String[] args){ int hasil = 1 + 2; // hasilnya sekarang 3System.out.println(hasil); hasil = hasil - 1; // hasilnya sekarang 2System.out.println(hasil); hasil = hasil * 2; // hasilnya sekarang 4System.out.println(hasil); hasil = hasil / 2; // hasilnya sekarang 2System.out.println(hasil); hasil = hasil + 8; // hasilnya sekarang 10hasil = hasil % 7; // hasilnya sekarang 3System.out.println(hasil); } } Anda juga dapat mengkombinasikan operator aritmetik dengan operator penugasan sederhana untuk menciptakan compound assigments. Sebagai contoh, x += 1; dan x = x+1; keduanya menambahkan nilai x dengan 1. Operator + dapat juga digunakan untuk menggabungkan (concatenating/joining) dua string, seperti diperlihatkan program ConcatDemo berikut: class ConcatDemo {public static void main(String[] args){ String stringPertama = "Ini adalah"; String stringKedua = " string yang digabungkan."; String stringKetiga = stringPertama+stringKedua; System.out.println(stringKetiga);} } Pada akhir program ini, variabel stringKetiga berisi Ini adalah string yang digabungkan, yang ditampilkan pada layar. Operator Unary Operator Unary hanya membutuhkan satu operand; operator ini melakukan berbagai operasi seperti penambahan/pengurangan sebuah nilai dengan penambahan/pengurangan 1 dan negasi, atau membalikkan sebuah nilai boolean. +Operator Unary plus; mengindikasikan nilai positif (angka bernilai positifwalaupun tanpa operator ini) 5 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 6. - Operator Unary minus; me-negasi sebuah ekspresi ++Operator penambahan; menambahkan nilai +1 --Operator pengurangan; mengurangi nilai -1 ! Operator logika complement; meng-invert nilai dari sebuah boolean Program UnaryDemo berikut menguji operator unary ini: class UnaryDemo { public static void main(String[] args){ int hasil = +1; // hasilnya sekarang 1 System.out.println(hasil); hasil--; // hasilnya sekarang 0 System.out.println(hasil); rhasil ++; // hasilnya sekarang 1 System.out.println(hasil); hasil = -hasil; // hasilnya sekarang -1 System.out.println(hasil); boolean sukses = false; System.out.println(sukses); // false System.out.println(!sukses); // true} } Operator penambahan/pengurangan dapat diaplikasikan pada sebelum (awalan) atau pun sesudah (akhiran) dari sebuah operan. Kode hasil++; dan ++hasil; keduanya membuat hasil ditambah 1, perbedaannya adalah pada versi awalan (++hasil) mengevaluasi nilai yang telah ditambahkan, dimana versi akhiran(hasil++) mengevaluasi nilai aslinya (sebelum ditambahkan 1). Jika anda hanya melakukan operasi penambahan/pengurangan sederhana, tidak ada masalah versi mana yang anda gunakan. Tetapi jika anda menggunakan operator ini sebagai bagian dari ekspresi yang lebih besar, versi yang anda pilih bisa jadi membuat perbedaan yang signifikan. Program PrePostDemo berikut mengilustrasikan operator unary penambahan/pengurangan: class PrePostDemo {public static void main(String[] args){ int i = 3; i++; System.out.println(i);// "4" ++i; System.out.println(i);// "5" System.out.println(++i);// "6" System.out.println(i++);// "6" System.out.println(i);// "7"} }Numbers Bagian ini adakan dimulai dengan sebuah diskusi tentang kelas Number (dalam paket java.lang) dan subclass-subclassnya. Secara khusus bagian ini akan membahas tentang situasi dimana anda diharuskan menggunakan kelas-kelas ini dibandingkan tipe data primitif. Sebagai tambahan, bagian ini akan membahas tentang kelas-kelas lain yang mungkin anda butuhkan untuk bekerja dengan angka, seperti formatting atau menggunakan fungsi matematis untuk melengkapi operator yang telah ada dalam bahasa pemrograman.6 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 7. Kelas-kelas Numbers saat bekerja dengan angka, seringkali anda menggunakan tipe data primitif pada kode anda. Seperti: int i = 500; float gpa = 3.65f; byte mask = 0xff; Adapun, alasan anda untuk menggunakan object sebagai ganti dari tipe data primitif, dan platform java menyediakan kelas pembungkus (wrapper) untuk tiap tipe data primitif. Kelas-kelas ini membungkus (boxes) tipe data primitif kedalam sebuah objek. Sering kali, pembungkusan dilakukan oleh compiler jika anda menggunakan sebuah tipe data primitif dimana sebetulnya tipe data objek yang dibutuhkan, compiler membuka bungkusan (unboxes) objek untuk anda. Berikut adalah contoh boxing dan unboxing: Integer x, y; x = 12; y = 15; System.out.println(x+y); Saat x dan y ditugaskan nilai integer, compiler mem-box integer karena x dan y adalah objek integer, dalam statement println(), x dan y di-unbox sehingga dapat dilakukan operasi penambahan integer. Seluruh kelas-kelas wrapper numerik adalah subclass dari kelas abstrak Number: Catatan: Ada empat subclass dari kelas Number yang tidak didiskusikan disini. BigDecimal dan BigInteger digunakan dalam kalkulasi yang membutuhkan ketepatan tinggi. AtomicInteger dan AtomicLong digunakan dalam aplikasi multi-thread. Ada tiga alasan mengapa anda harus menggunakan objek Number dibandingkan tipe data primitif: 1.Sebagai argumen dari sebuah methode yang mengharapkan sebuah objek (sering kali digunakan saat memanipulasi sekumpulan angka). 2.Untuk digunakan sebagai constants yang didefinisikan oleh kelas, seperti MIN_VALUE dan MAX_VALUE, yang menyediakan batas atas dan batas bawah dari tipe data. 3.Untuk menggunakan metode kelas yang mengkonversi nilai ke dan dari tipe data primitif lainnya, untuk menkonversi ke dan dari String, dan untuk mengkoversi antara number systems (decimal, octal, hexadecimal, binary). 7 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 8. Tabel berikut berisi daftar instace methode dari seluruh subclass kelas Number.Method-metod yang diimplementasikan oleh seluruh subclass dari kelas Number MethodDeskripsibyte byteValue() short shortValue() int intValue()Mengkonversi nilai dari objek Number ke long longValue()tipe data primitif. float floatValue() double doubleValue()int compareTo(Byte anotherByte) int compareTo(Double anotherDouble) int compareTo(Float anotherFloat) Membandingkan objek Number dengan int compareTo(Integer anotherInteger) nilai variabel argumen. int compareTo(Long anotherLong) int compareTo(Short anotherShort)Menentukan apakah objek number ini sama dengan nilai objek pada argumen. Methode ini mengembalikan true jika argumen tidak null dan adalah objek yang boolean equals(Object obj)bertipe sama dan memiliki nilai numerik yang sama. Ada kebutuhan tambahan untuk objek Float dan Double yang di deskripsikan pada Java API Documentation. Tiap kelas Number berisi metode-metode lain yang berguna untuk mengkonversi angka dari dan ke string dan untuk mengkonversi antara angka System. Tabel berikut berisi daftar dari metode-metode tersebut dalam kelas Integer. Metode-metode pada subclas Number lainnya hampir sama:Metode Konversi, Kelas Integer MethodDeskripsimen-Decodes sebuah string menjadi integer. Dapat menerima representasi static Integer decode(String s) string dari desimal, octal, atau hexadecimal sebagai input.static int parseInt(String s) Returns integer (hanya desimal).static int parseInt(String s, int radix)Returns integer, dari isi string berbentuk desimal, octal, atau hexadesimal (dengan 8 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 9. radix 10, 2, 8 atau 16 secara berurutan) sebagai input.Mengembalikan sebuah objek String yang String toString() merepresentasikan nilai dari integer ini.Mengembalikan sebuah objek string yagn static String toString(int i) merepresentasikan sebuah integer spesifik.Mengembalikan objek integer yang static Integer valueOf(int i) menyimpan nilai dari tipe data primitif int.Mengembalikan objek integer yang static Integer valueOf(String s)menyimpan nilai dari sebuah string spesifik.Mengembalikan nilai objek integer yang menyimpan nilai integer dari sebuah string spesifik, di parse di parse dengan nilai radix. Sebagai contoh, jika s = 333 static Integer valueOf(String s, int radix) dengan radix = 8, metode ini mengembalikan nilai desimal (basis 10) yang sama dengan angka octal (basis 8) dari 333.Mem-format Tampilan Output variabel Numerik Karena seluruh Number dapat diubah menjadi String (seperti yang akan anda lihatk), anda dapat menggunakan method-method untuk menampilkan campuran dari string dan angka. Bahasa Pemrograman java juga menyediakan method-method lain yang mengizinkan programmer untuk mendapatkan kontrol yang lebih baik saat angka dilibatkan. Paket java.io memiliki kelas PrintStream yang memiliki dua metode pemformatan yang dapat anda gunakan untuk mengganti print dan println. Metode-metode ini, format dan printf, adalah metode yang sejenis. Metode System.out yang sering anda gunakan kebetulan adalah sebuah objek PrintStream, sehingga anda dapat menuliskan format maupun printf dimanapan pada kode anda(sama seperti print dan println). Sebagai contoh : System.out.format(.....); Syntax untuk kedua methode java.io.PrintStream adalah sama: public PrintStream format(String format, Object... args); Dimana format adalah sebuah string yang menspesifikasikan pem-formatan yang digunakan dan args adalah daftar dari variabel yang ditampilkan menggunakan pem-formatan. Berikut contoh sederhananya : System.out.format("Nilai dari variabel float adalah %f, sedangkan nilai dari " +"variabel integer adalah %d, dan variabel string adalah %s",floatVar, intVar, stringVar);9 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 10. Parameter pertama (format) adalah sebuah format dari string yang menspesifikasikan bagaimana objek pada parameter kedua (args) di format. String yang ter-format mengandung text sederhana juga penentuan format, yang merupakan karakter khusus yang memformat argumen dari Object....args. (Notasi Object....args dinamakan varargs, yang berarti bahwa jumlah argumen dapat beragam.) Karakter pem-formatan khusus dimulai dengan sebuah lambang persen (%) dan diakhiri dengan sebuah converter. Converter adalah sebuah karakter yang mengindikasikan tipe argumen yang di- format. Diantara lambang persen (%) dan converter anda dapat memiliki flag dan specifier pilihan. Ada banyak jenis converter, flags dan specifier, yang didokumentasikan dalam java.util.Formatter. Berikut adalah sebuah contoh sederhana: int i = 461012; System.out.format("Nilai dari variabel i adalah: %d%n", i); %dmenspesifikasikan bahwa variabel tunggal adalah sebuah integer desimal. %n adalah karakter newline yang system independent. Outuput dari potongan program diatas adalah: Nilai dari variabel i adalah: 461012 Kelas DecimalFormat Anda dapat menggunakan kelas java.text.DecimalFormat untuk mengendalikan tampilan awalan dan akhiran angka nol, pemisah ribuan, dan pemisah angka desimal. DecimalFormat menawarkan fleksibilitas yang luar biasa dalam mem-format angka, tetapi dapat menjadikan kode menjadi lebih kompleks. Contoh berikut menciptakan objek DecimalFormat, myFormatter, dengan mengirimkan sebuah string pola ke konstruktor DecimalFormat. Metode format(), yang merupakan metode yang diwariskan dari kelas NumberFormat, kemudian di panggil oleh myFormatter myFormatter menerima sebuah nilai double sebagai argumen masukan dan mengembalikan angka yang telah ter- format dalam sebuah string: Berikut adalah contoh program yang mengilustrasikan penggunaan DecimalFormat: import java.text.*;public class DecimalFormatDemo {static public void customFormat(String pattern, double value ) {DecimalFormat myFormatter = new DecimalFormat(pattern);String output = myFormatter.format(value);System.out.println(value + " " + pattern + " " + output); }static public void main(String[] args) {customFormat("###,###.###", 123456.789); customFormat("###.##", 123456.789); customFormat("000000.000", 123.78); customFormat("$###,###.###", 12345.67); } } Output-nya adalah: 10 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 11. 123456.789 ###,###.###123,456.789 123456.789 ###.## 123456.79 123.78 000000.000 000123.780 12345.67$###,###.###$12,345.67 Tabel berikut menjelaskan tiap baris dari output.Output DecimalFormat.javaNilaiPolaOutput PenjelasanPound (#) melambangkan sebuah digit angka, lambang koma memisahkan 123456.789 ###,###.### 123,456.789pengelompokkan angka ribuan, dan lambang titik memisahkan angka-angka desimal.Nilai disamping memiliki tiga digit disebelah kanan titik desimal, tetapi pola- 123456.789 ###.##123456.79nya hanya memiliki dua. Metode format menangani hal ini dengan membulatkannya ke atas.Pola disamping menspesifikasikan awalan 123.78 000000.000000123.780 dan akhiran angka nol , karena karakter 0 yang digunakan, bukan karakter #.Karakter pertama pada pola adalah lambang dollar ($). Perhatikan bahwa 12345.67 $###,###.###$12,345.67 pada output lambang dollar ini ditampilkan pada sisi kiri. 11 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 12. String Strings, yang digunakan secara luas dalam pemrograman java adalah sebuah rangkaian karakter. Pada bahasa pemrograman java, string adalah objek.Menciptakan String Cara yang paling mudah untuk menciptakan string adalah dengan menuliskan: String sambutan : Hello world!; Dalam kasus ini, Hello world! adalah sebuah string literal-sebuah rentetan karakter pada kode anda yang ditutup oleh kutip ganda. Seperti objek lain, anda dapat menciptakan objek string dengan menggunakan keyword new dan sebuah konstruktor. Kelas string memiliki tiga belas konstruktor yang mengizinkan anda untuk menyediakan nilai awal dari string menggunakan sumber-sumber yang berbeda, seperti array dari karakter: char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.'}; String helloString = new String(helloArray); System.out.println(helloString); Baris terakhir dari potongan kode ini menampilkan hello. Catatan: Kelas String bersifat immutable, sehingga sekalinya diciptakan sebuah objek string tidak dapat diubah. Kelas string memiliki sejumlah methode, beberapa diantaranya akan didiskusikan dibawah. Karena string bersifat immutable, yang dilukakan methode-methode dibawah adalah membuat string baru dan mengembalikan sebuah string baru yang berisi hasil dari operasi tersebut.Panjang String Method yang digunakan untuk mendapatkan informasi mengenai suatu objek dinamakan accessor methodes. Salah satu accessor methode yang dapat anda gunakan pada string adalah methode length(), yang mengembalikan angka jumlah karakter yang terdapat pada objek string. Setelah dua baris kode dibawah dieksekusi, len sama dengan 11: String palindrome = "Kasur rusaK"; int len = palindrome.length(); Palindrome adalah sebuah kata atau kalimat yang bersifat simetris palindrome di eja sama, baik dari arah depan maupun belakang. Berikut adalah program pendek tetapi tidak efisien untuk membalikkan sebuah string palindrome. Program ini mempekerjakan methode charAt(i), yang mengembalikan nilai karakter ke-i pada string, dimulai dari 0. public class StringDemo { public static void main(String[] args) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); char[] tempCharArray = new char[len]; char[] charArray = new char[len]; // put original string in an array of charsfor (int i = 0; i < len; i++) {tempCharArray[i] = palindrome.charAt(i);}12 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 13. // reverse array of charsfor (int j = 0; j < len; j++) {charArray[j] = tempCharArray[len - 1 - j];} String reversePalindrome = new String(charArray);System.out.println(reversePalindrome); } } Menjalanakan program diatas akan menghasilkan output sebagai berikut: doT saw I was toD Untuk menghasilkan pembalikan string, program harus mengkonversi string ke array berisi karakter (loop pertama), membalikkan array ke pada array kedua (loop kedua), lalu kemudian mengubahnya lagi menjadi String. Kelas string memiliki sebuah method, getChars(), untuk mengkonversi sebuah string, ataupun sebagian string kedalam array dari karakter-karakter tersebut sehingga dapat kita ganti loop pertama pada program diatas dengan: palindrome.getChars(0, len, tempCharArray, 0); Menggabungkan String Kelas String memiliki sebuah methode untuk menggabungkan (concatenating) dua string: string1.concat(string2); Ini mengembalikan sebuah string baru dengan string2 yang ditambahkan di akhir string1. String umumnya digabungkan dengan operator + seperti pada: "Hello," + " world" + "!" Yang menghasilkan : "Hello, world!" Operator + digunakan secara luas pada pernyataan untuk menampilkan ke layar. Sebagai contoh; String string1 = "saw I was "; System.out.println("Dot " + string1 + "Tod"); Yang menampilkan Dot saw I was Tod Penggabungan seperti itu dapat terdiri dari berbagai objek. Untuk setiap objek yang bukan string, methode toString() dipanggil untuk mengkonversi object tersebut ke string. Catatan: Bahasa pemrograman java tidak mengizinkan string literal memiliki beberapa baris pada kode, sehingga anda harus menggunakan operator penggabungan + pada akhir dari tiap baris. Sebagai contoh, String quote = "Sekarang adalah waktunya untuk tiap manusia" + "yang baik untuk membantu negaranya."; Memecah string menjadi dua baris menggunakan operator +, sekali lagi, sangat umum pada pernyataan yang menampilkan ke layar. 13 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 14. Membuat String format Anda telah melihat methode printf() dan format() untuk menampilkan output dengan angka yang telah terformat. Kelas string memiliki methode yang sama, format(), yang mengembalikan sebuah objek string daripada sebuah object PrintStream. Menggunakan methode static format() mengizinkan anda untuk menciptakan sebuah string terformat yang dapat anda guna ulang, dibandingkan dengan statement print sekali pakai. Sebagai contoh, dibanding menuliskan: System.out.printf("Nilai dari variabel float adalah %f, sedangkan nilai " + "dari variabel integer adalah %d, dan variabel string +adalah %s", floatVar, intVar, stringVar); anda dapat menuliskan String fs; fs = String.format("Nilai dari variabel float adalah %f, sedangkan nilai" + "dari variabel integer adalah %d, dan variabel string +adalah %s", floatVar, intVar, stringVar); System.out.println(fs); Mengkonversi String ke Number Sering kali, sebuah program berakhir dengan data numerik dalam objek string sebagai contoh : sebuah nilai yang dimasukkan oleh user. Subclass-subclass Number yang membungkus tipe data numerik primitif ( Byte, Integer, Double, Float, Long, and Short) masing-masing memiliki sebuak method kelas yang bernama valueOf yang mengkonversi sebuah string menjadi objek dari tipe data tersebut. Berikut adalah contoh program ValueOfDemo yang mendapatkan dua string dari Command Line, mengkonversi kedua string tersebut ke number. Dan melakukan operasi aritmetik pada nilai yang terkandungnya:public class ValueOfDemo { public static void main(String[] args) { //program ini membutuhkan dua argumen pada Command Line// contoh pengeksekusian : javac ValueOfDemo 23 45if (args.length == 2) {//mengkonversi string ke numberfloat a = (Float.valueOf(args[0]) ).floatValue();float b = (Float.valueOf(args[1]) ).floatValue(); // lakukan beberapa operasi aritmetik dan tampilkan ke layarSystem.out.println("a + b = " + (a + b) );System.out.println("a - b = " + (a - b) );System.out.println("a * b = " + (a * b) );System.out.println("a / b = " + (a / b) );System.out.println("a % b = " + (a % b) );} else { System.out.println("program ini membutuhkan dua arg masukan."); 14 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010 15. } } } Berikut adalah output dari program diatas saat anda memasukkan nilai 4.5 dan 87.2 pada argumen command-line: a + b = 91.7 a - b = -82.7 a * b = 392.4 a / b = 0.0516055 a % b = 4.5 Catatan: tiap subclass Number yang membungkus tipe data numerik primitif juga menyediakan sebuah metode parseXXX()(contohnya parseFloat()) yang dapat digunakan untuk mengkonversi string ke tipe data numerik primitif. Metode parseFloat() bersifat lebih langsung daripada method valueOf(). Sebagai contoh, pada program ValueOfDemo, kita dapat menggunakan: float a = Float.parseFloat(args[0]); float b = Float.parseFloat(args[1]);Mengkonversi Number ke String kadang kala anda membutuhkan cara untuk mengkonversi sebuah string karena anda harus mengoperasikan nilai dari suatu variabel dalam bentuk String. Ada beberapa cara mudah untuk melakukan ini : int i; String s1 = "" + i; //Concatenate "i" with an empty string; //conversion is handled for you. atau String s2 = String.valueOf(i);//The valueOf class method. Tiap subclass dari Number memiliki sebuah methode toString() (Kebanyakan kelas Pada java memilikinya), yang mengkonversi tipe data primitif yang dimilikinya kedalam bentuk String. Sebagai contoh: int i; double d; String s3 = Integer.toString(i); String s4 = Double.toString(d); Contoh program ToStringDemo dibawah menggunakan metod toString untuk mengkonversi sebuah angka kedalam bentuk String. Program ini lalu menggunakan metode-metode string tertentu untuk mengkomputasi banyaknya digit sebelum dan sesudah titik desimal: public class ToStringDemo {public static void main(String[] args) { double d = 858.48; String s = Double.toString(d); int dot = s.indexOf('.'); System.out.println(dot + " digit sebelum titik desimal.");System.out.println( (s.length() - dot - 1) +" digit setelah titik desimal."); } } // output 3 digit sebelum titik desimal. 2 digit setelah titik desimal.15 Pelatihan Java ; Java Numbers and String Ammar Shadiq Ver 1.0 : 10-04-2010