Mari kita lihat kode terlebih dahulu
kelas publik integerdemo {public static void main (string [] args) {string num = null; System.out.println (integer.parseint (num)); // pengecualian java.lang.numberformatexception System.out.println (integer.valueof (num)); // pengecualian java.lang.numberformateSception System.out.println (string.valueof); // output null num = ""; System.out.println (integer.parseint (num)); // pengecualian java.lang.numberformatexception System.out.println (integer.valueof (num)); // pengecualian java.lang.numberformatexception System.out.println (string.valueof (num)); // string kosong, tidak ada output}}Mari kita lihat bagaimana String.ValueOf () ditulis
String.ValueOf () dapat mengeluarkan secara normal saat bertemu dengan string nol dan kosong, jadi tidak ada kesalahan yang dilemparkan.
Mari kita lihat bagaimana tipe pengemasan integer ditangani
Dalam kedua metode tersebut, ParseInt (S, 10) adalah untuk mengubah string S menjadi tipe dasar int desimal, tetapi nilai () akan diambil dari cache internal [-127, 127] sesuai dengan rentang int (menggunakan mode entitas dalam mode desain)
Mari kita lihat Parseint (S, 10). Dalam metode ini, kami akan menilai apakah string itu adalah nomor hukum, dan kami akan memverifikasi format lain seperti nol, string kosong, dll., Jadi kami akan melakukan kesalahan
Public Static Int ParseInt (String S, Int Radix) melempar NumberFormatException { / * * Peringatan: Metode ini dapat dipanggil lebih awal selama inisialisasi VM * sebelum integercache diinisialisasi. Perawatan harus diambil untuk tidak menggunakan * Metode Nilai. */ if (s == null) {lempar numberFormateException baru ("null"); } if (radix <character.min_radix) {lempar numberFormateException baru ("radix" + radix + "kurang dari karakter.min_radix"); } if (radix> character.max_radix) {throw number numberFormatException ("radix" + radix + "lebih besar dari karakter.max_radix"); } int result = 0; Boolean negatif = false; int i = 0, len = s.length (); batas int = -integer.max_value; int mulmin; Digit int; if (len> 0) {char firstchar = s.charat (0); if (firstChar <'0') {// Kemungkinan memimpin "+" atau "-" if (firstChar == '-') {negatif = true; Limit = integer.min_value; } else if (firstChar! = '+') throw numberformatexception.forInputString (s); if (len == 1) // tidak dapat memiliki satu-satunya "+" atau "-" Throw NumberFormatException.forInputString (s); i ++; } MultMin = Limit / Radix; while (i <len) {// terakumulasi secara negatif menghindari kejutan di dekat max_value digit = karakter.digit (s.charat (i ++), radix); if (digit <0) {throw numberformatexception.forInputString (s); } if (hasil <multmin) {throw numberformatexception.forInputString (s); } hasil *= radix; if (hasil <limit + digit) {throw numberformatexception.forInputString (s); } hasil -= digit; }} else {throw numberformatexception.forInputString (s); } return negatif? Hasil: -Result; }Meringkaskan
Di atas adalah perbedaan dan analisis kode hasil integer.valueof, parsetint () string.valueof di java diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!