Jawa int ke String - bilangan Bulat.toString(i) vs new Integer(i).toString()

Kadang-kadang java teka-teki saya. Saya memiliki sejumlah besar int inisialisasi untuk membuat.

Apa's nyata perbedaan?

  1. Integer.toString(i)
  2. new Integer(i).toString()
Mengomentari pertanyaan (8)
Larutan

Bilangan bulat.toString panggilan metode statis di kelas bilangan Bulat. Itu tidak membutuhkan sebuah contoh dari bilangan Bulat.

Jika anda menelepon new Integer(i) anda membuat sebuah instance dari tipe Integer, yang penuh objek Java yang merangkum nilai int. Kemudian anda menelepon toString metode untuk meminta untuk kembali representasi string sendiri.

Jika semua yang anda inginkan adalah untuk mencetak sebuah int, anda'a menggunakan yang pertama karena itu's lebih ringan, lebih cepat dan doesn't menggunakan memori tambahan (selain dari kembali string).

Jika anda ingin sebuah objek yang mewakili nilai integer—untuk memasukkannya ke dalam koleksi untuk contoh—you'd gunakan kedua, karena hal itu memberikan anda sebuah objek penuh untuk melakukan semua jenis hal-hal yang tidak dapat anda lakukan dengan telanjang int.

Komentar (0)

new Integer(i).toString() pertama yang menciptakan (berlebihan) pembungkus benda di sekitar aku (yang dengan sendirinya dapat menjadi pembungkus objek bilangan Bulat).

Integer.toString(i) lebih disukai karena itu doesn't membuat benda yang tidak perlu.

Komentar (0)

Pilihan lain adalah statis String.valueOf metode.

String.valueOf(i)

Itu terasa sedikit lebih tepat daripada Integer.toString(i) untuk saya. Ketika jenis i perubahan, misalnya dari int untuk double, kode akan tetap benar.

Komentar (1)
  1. new Integer(i).toString();

Pernyataan ini menciptakan objek Integer dan kemudian memanggil metode toString(i) ke kembali representasi String Integer's nilai.

  1. Integer.toString(i);

Itu kembali objek String yang mewakili spesifik int (integer), tapi di sini toString(int) adalah statis metode.

Ringkasan dalam kasus pertama itu kembali benda-benda representasi string, dimana dalam kedua kasus itu kembali representasi string integer.

Komentar (1)

Saya juga sangat merekomendasikan menggunakan

int integer = 42;
String string = integer + "";

Sederhana dan efektif.

Komentar (4)

Meskipun saya suka fhucho's rekomendasi dari

String.valueOf(i)

Ironi adalah bahwa metode ini benar-benar panggilan

Integer.toString(i)

Dengan demikian, menggunakan String.valueOf(i) jika anda seperti bagaimana membaca dan anda don't perlu radix, tetapi juga mengetahui bahwa hal ini kurang efisien dari Integer.toString(i).

Komentar (0)

Dalam hal pengukuran kinerja, jika anda sedang mempertimbangkan kinerja waktu kemudian Integer.toString(i); lebih mahal jika anda menelepon kurang dari 100 juta kali. Lain lagi jika lebih dari 100 juta panggilan maka new Integer(10).toString() akan tampil lebih baik.

Di bawah ini adalah kode melalui u dapat mencoba untuk mengukur kinerja,

public static void 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 = new Integer(10).toString();
        }
        endtime = System.currentTimeMillis();
        System.out.println("diff2: " + (endtime-starttime));
    }

Dalam hal memori,

new Integer(i).toString();

akan memakan memori lebih banyak karena akan membuat objek setiap waktu, sehingga fragmentasi memori akan terjadi.

Komentar (6)

Baik:

Integer.valueOf(i).toString()
Komentar (4)

Cara sederhana adalah hanya menggabungkan "," dengan bilangan bulat:

int i = 100;

String s = "" + i;

sekarang s akan 100 sebagai nilai string.

Komentar (0)

Di sini Integer.toString panggilan metode statis di kelas Integer. Tidak memerlukan objek untuk menelepon.

Jika anda menelepon new Integer(i) anda terlebih dahulu membuat instance dari tipe Integer, yang penuh objek Java yang merangkum nilai int i. Kemudian anda menelepon toString metode itu untuk menanyakan hal itu untuk mengembalikan sebuah string representasi dari dirinya sendiri.

Komentar (0)

1.Bilangan bulat.toString(i)

Integer i = new Integer(8);
    // returns a string representation of the specified integer with radix 8
 String retval = i.toString(516, 8);
System.out.println("Value = " + retval);

2.new Integer(i).toString()

 int i = 506;

String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class java.lang.String
Komentar (0)