Saya hanya akan menggunakan "" + 42, tapi hei, itu saya. Formulir # 2 akan menghasilkan objek integer baru (untuk sebagian besar nilai i) sebagai perantara. Ini juga lebih banyak mengetik.
16
@ pst: jika objek perantara adalah masalah bagi Anda, maka "" + 42tidak ada yang lebih baik, karena membutuhkan perantara StringBuilderyang cukup banyak lebih berat daripada Integer.
Joachim Sauer
47
"" +42 mungkin bekerja, tetapi itu ide yang buruk. Orang-orang seperti saya akan melihat kode Anda dan mencoba mencari tahu apa yang terjadi pada string kosong.
Mainguy
3
Saya tidak akan merekomendasikan "" + 42karena dalam kasus menambahkan string bilangan bulat Anda mungkin akhirnya menambahkan nilai-nilai dan tidak menyadarinya.
BoltzmannBrain
20
Jika Anda tidak suka banyak mengetik, maka Anda mungkin tidak seharusnya pemrograman di Java.
Jika Anda menelepon, new Integer(i)Anda membuat turunan tipe Integer, yang merupakan objek Java lengkap yang merangkum nilai int Anda. Kemudian Anda memanggil toStringmetode di atasnya untuk memintanya mengembalikan representasi string itu sendiri .
Jika yang Anda inginkan hanyalah mencetak int , Anda akan menggunakan yang pertama karena lebih ringan, lebih cepat dan tidak menggunakan memori tambahan (selain dari string yang dikembalikan).
Jika Anda ingin objek yang mewakili nilai integer — untuk memasukkannya ke dalam koleksi, misalnya — Anda akan menggunakan yang kedua, karena ia memberi Anda objek lengkap untuk melakukan semua hal yang tidak dapat Anda lakukan dengan telanjang int.
Iya. Kecuali Anda harus menggunakan RADIX (dalam hal ini Anda harus menggunakan Integer.toString)
marcolopes
14
new Integer(i).toString();
Pernyataan ini menciptakan objek Integer dan kemudian memanggil metode-metodenya toString(i)untuk mengembalikan representasi String dari nilai Integer .
Integer.toString(i);
Ini mengembalikan objek String yang mewakili int tertentu (integer) , tetapi di sini toString(int)adalah staticmetode.
Ringkasan dalam kasus pertama mengembalikan representasi string objek, di mana seperti dalam kasus kedua ia mengembalikan representasi string integer.
ini jelas merupakan bentuk yang buruk, karena keduanya bergantung pada bagian bahasa Jawa yang cukup halus dan kurang efisien daripada Integer.toString (i). Lihat posting ini SO
rickcnagy
Ini bisa jadi tidak efisien. Saya sarankan menggunakan beberapa pilihan konvensional seperti Integer.toString atau String.valueOf. Lihat di sini javadevnotes.com/java-integer-to-string-examples
JavaDev
Ini umumnya ide yang buruk untuk melakukan hal-hal dengan cara yang tidak intuitif. Pilihan yang lebih jelas seperti Integer.toString()mungkin menggunakan beberapa penekanan tombol tambahan, tetapi jauh lebih jelas, yang sangat penting ketika Anda ingin mempertahankan kode.
Calvin Li
Bukankah ini akan secara otomatis memanggil toString()metode variabel integer ?
Ankit Deshpande
11
Meskipun saya suka rekomendasi fhucho dari
String.valueOf(i)
Ironinya adalah bahwa metode ini sebenarnya memanggil
Integer.toString(i)
Jadi, gunakan String.valueOf(i)jika Anda suka cara membaca dan Anda tidak perlu radix, tetapi juga tahu bahwa itu kurang efisien daripada Integer.toString(i).
Dalam hal pengukuran kinerja, jika Anda mempertimbangkan kinerja waktu maka Integer.toString (i); mahal jika Anda menelepon kurang dari 100 juta kali. Jika tidak lebih dari 100 juta panggilan maka Integer baru (10) .toString () akan berkinerja lebih baik.
Di bawah ini adalah kode melalui Anda dapat mencoba mengukur kinerja,
publicstaticvoid main(String args[]){int MAX_ITERATION =10000000;long starttime =System.currentTimeMillis();for(int i =0; i < MAX_ITERATION;++i){String s =Integer.toString(10);}long endtime =System.currentTimeMillis();System.out.println("diff1: "+(endtime-starttime));
starttime =System.currentTimeMillis();for(int i =0; i < MAX_ITERATION;++i){String s1 =newInteger(10).toString();}
endtime =System.currentTimeMillis();System.out.println("diff2: "+(endtime-starttime));}
Dalam hal memori,
Integer baru (i) .toString ();
akan mengambil lebih banyak memori karena akan membuat objek setiap waktu, sehingga fragmentasi memori akan terjadi.
Saya menempelkan kode ini di IntelliJ IDEA dan mendapat peringatan: " new Integer(10).toString() can be simplified to Integer.toString(10)"
oksayt
Kode ini berfungsi untuk saya. Saya mendapatkan sekitar 420 milidetik untuk Integer.toString (10) dan 525 milidetik untuk Integer baru (10) .toString ()
Akan membantu pemanasan terlebih dahulu, jika tidak hasilnya tidak valid!
Sixones
Jika Anda mengatakan satu mahal dalam satu kasus, dan yang lain lebih baik dalam kasus lain, itu berarti yang lain lebih baik / murah dalam semua situasi.
Saya pikir ini lebih baik, karena seperti @Dhiraj menunjukkan bahwa dalam hal memori, "Integer baru (i) .toString ();" akan mengambil lebih banyak memori karena ia menciptakan objek baru alih-alih hanya mendapatkan nilai Integer dan mengubahnya menjadi string.
Patricia
4
@Lucy Integer.valueOf (i) mengembalikan Integer baru, jadi tidak ada perbedaan
inigoD
Anda sama sekali tidak memberikan jawaban untuk pertanyaan itu. Pertanyaannya adalah apa perbedaan antara bla dan bla, bukan apa pengganti bla yang lebih baik.
ahitt6345
2
Cara sederhana hanya digabungkan ""dengan integer:
Sini
Integer.toString memanggil metode statis di Integer kelas. Itu tidak memerlukan objek untuk memanggil.
Jika Anda menelepon new Integer(i)Anda, pertama-tama buat instance dari tipe Integer, yang merupakan objek Java lengkap yang merangkum nilai int i Anda. Kemudian Anda memanggil toStringmetode di atasnya untuk memintanya mengembalikan representasi string itu sendiri.
Integer i =newInteger(8);// returns a string representation of the specified integer with radix 8String retval = i.toString(516,8);System.out.println("Value = "+ retval);
2.new Integer(i).toString()
int i =506;String str =newInteger(i).toString();System.out.println(str +" : "+newInteger(i).toString().getClass());////506 : class java.lang.String
"" + 42
, tapi hei, itu saya. Formulir # 2 akan menghasilkan objek integer baru (untuk sebagian besar nilai i) sebagai perantara. Ini juga lebih banyak mengetik."" + 42
tidak ada yang lebih baik, karena membutuhkan perantaraStringBuilder
yang cukup banyak lebih berat daripadaInteger
."" + 42
karena dalam kasus menambahkan string bilangan bulat Anda mungkin akhirnya menambahkan nilai-nilai dan tidak menyadarinya.Jawaban:
Integer.toString
memanggil metode statis di kelasInteger
. Tidak perlu turunan dariInteger
.Jika Anda menelepon,
new Integer(i)
Anda membuat turunan tipeInteger
, yang merupakan objek Java lengkap yang merangkum nilai int Anda. Kemudian Anda memanggiltoString
metode di atasnya untuk memintanya mengembalikan representasi string itu sendiri .Jika yang Anda inginkan hanyalah mencetak
int
, Anda akan menggunakan yang pertama karena lebih ringan, lebih cepat dan tidak menggunakan memori tambahan (selain dari string yang dikembalikan).Jika Anda ingin objek yang mewakili nilai integer — untuk memasukkannya ke dalam koleksi, misalnya — Anda akan menggunakan yang kedua, karena ia memberi Anda objek lengkap untuk melakukan semua hal yang tidak dapat Anda lakukan dengan telanjang
int
.sumber
new Integer(i).toString()
pertama membuat objek pembungkus (redundan) di sekitarnyai
(yang itu sendiri mungkin merupakan objek pembungkusInteger
).Integer.toString(i)
lebih disukai karena tidak membuat objek yang tidak perlu.sumber
Pilihan lain adalah
String.valueOf
metode statis .Ini terasa sedikit lebih benar daripada
Integer.toString(i)
dengan saya. Ketika jenis i berubah, misalnya dariint
kedouble
, kode akan tetap benar.sumber
new Integer(i).toString();
Pernyataan ini menciptakan objek Integer dan kemudian memanggil metode-metodenya
toString(i)
untuk mengembalikan representasi String dari nilai Integer .Integer.toString(i);
Ini mengembalikan objek String yang mewakili int tertentu (integer) , tetapi di sini
toString(int)
adalahstatic
metode.Ringkasan dalam kasus pertama mengembalikan representasi string objek, di mana seperti dalam kasus kedua ia mengembalikan representasi string integer.
sumber
Saya juga sangat merekomendasikan menggunakan
Sederhana dan efektif.
sumber
Integer.toString()
mungkin menggunakan beberapa penekanan tombol tambahan, tetapi jauh lebih jelas, yang sangat penting ketika Anda ingin mempertahankan kode.toString()
metode variabel integer ?Meskipun saya suka rekomendasi fhucho dari
Ironinya adalah bahwa metode ini sebenarnya memanggil
Jadi, gunakan
String.valueOf(i)
jika Anda suka cara membaca dan Anda tidak perlu radix, tetapi juga tahu bahwa itu kurang efisien daripadaInteger.toString(i)
.sumber
Dalam hal pengukuran kinerja, jika Anda mempertimbangkan kinerja waktu maka Integer.toString (i); mahal jika Anda menelepon kurang dari 100 juta kali. Jika tidak lebih dari 100 juta panggilan maka Integer baru (10) .toString () akan berkinerja lebih baik.
Di bawah ini adalah kode melalui Anda dapat mencoba mengukur kinerja,
Dalam hal memori,
akan mengambil lebih banyak memori karena akan membuat objek setiap waktu, sehingga fragmentasi memori akan terjadi.
sumber
new Integer(10).toString() can be simplified to Integer.toString(10)
"Lebih baik:
sumber
Cara sederhana hanya digabungkan
""
dengan integer:sekarang
s
akan memiliki100
nilai string.sumber
Sini
Integer.toString
memanggil metode statis di Integer kelas. Itu tidak memerlukan objek untuk memanggil.Jika Anda menelepon
new Integer(i)
Anda, pertama-tama buat instance dari tipe Integer, yang merupakan objek Java lengkap yang merangkum nilai int i Anda. Kemudian Anda memanggiltoString
metode di atasnya untuk memintanya mengembalikan representasi string itu sendiri.sumber
1.
Integer.toString(i)
2.
new Integer(i).toString()
sumber