มาดูรหัสก่อน
คลาสสาธารณะ IntegerDemo {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {สตริง num = null; System.out.println (integer.parseint (num)); // ข้อยกเว้น java.lang.numberformatexception system.out.println (integer.valueof (num)); // exception java.lang.numberformatexception system.out.println (string.valueof (num); // เอาต์พุต null num = ""; System.out.println (integer.parseint (num)); // ข้อยกเว้น java.lang.numberformatexception system.out.println (Integer.valueof (num)); // ข้อยกเว้น java.lang.numberformatexception system.out.println (string.valueof (num)); // สตริงเปล่าไม่มีอะไรเป็นเอาต์พุต}}ลองมาดูกันว่า string.valueof () เขียนอย่างไร
string.valueof () สามารถส่งออกได้ตามปกติเมื่อพบกับสายว่างและสตริงที่ว่างเปล่าดังนั้นจึงไม่มีข้อผิดพลาดใด ๆ
ลองมาดูกันว่าการจัดการจำนวนเต็มประเภทบรรจุภัณฑ์ได้รับการจัดการอย่างไร
ในทั้งสองวิธี ParseInt (S, 10) คือการแปลงสตริง S เป็นประเภทพื้นฐานทศนิยม แต่ค่าของ () จะถูกดึงออกมาจากแคชภายในของ [-127, 127] ตามช่วง int (ใช้โหมดเอนทิตีในโหมดการออกแบบ)
มาดู Parseint (S, 10) ในวิธีการเราจะตัดสินว่าสตริงเป็นหมายเลขทางกฎหมายหรือไม่และเราจะตรวจสอบรูปแบบอื่น ๆ เช่น null, สตริงเปล่า ฯลฯ ดังนั้นเราจะโยนข้อผิดพลาด
parseint int คงที่สาธารณะ (String S, int radix) พ่น NumberFormatexception { / * * คำเตือน: วิธีนี้อาจถูกเรียกใช้ก่อนในระหว่างการเริ่มต้น VM * ก่อนที่ IntegerCache จะเริ่มต้น ต้องใช้ความระมัดระวังเพื่อไม่ใช้ * วิธีการที่มีค่า */ if (s == null) {โยน numberFormatexception ใหม่ ("null"); } if (radix <character.min_radix) {โยน numberFormatexception ใหม่ ("radix" + radix + "น้อยกว่า character.min_radix"); } if (radix> charate.max_radix) {โยน numberFormatexception ใหม่ ("radix" + radix + "มากกว่า character.max_radix"); } int result = 0; บูลีนลบ = false; int i = 0, len = s.length (); int limit = -integer.max_value; int multmin; ตัวเลข int; if (len> 0) {char firstchar = s.charat (0); if (FirstChar <'0') {// นำไปสู่การเป็นผู้นำ "+" หรือ "-" ถ้า (firstChar == '-') {negative = true; จำกัด = integer.min_value; } อื่นถ้า (firstChar! = '+') โยน numberFormatexception.forInputString (s); ถ้า (len == 1) // ไม่สามารถมี lone "+" หรือ "-" โยน numberFormatexception.forinputString (s); i ++; } multmin = limit / radix; ในขณะที่ (i <len) {// สะสมในทางลบหลีกเลี่ยงความประหลาดใจใกล้กับ max_value digit = character.digit (S.Charat (i ++), radix); if (digit <0) {โยน numberFormatexception.forInputString (s); } if (ผลลัพธ์ <multmin) {โยน numberFormatexception.forInputString (s); } ผลลัพธ์ *= radix; if (ผลลัพธ์ <ขีด จำกัด + ตัวเลข) {โยน numberFormatexception.forInputString (s); } ผลลัพธ์ -= ตัวเลข; }} else {โยน numberFormatexception.forInputString (s); } return negative? ผลลัพธ์: -result; -สรุป
ข้างต้นคือความแตกต่างและการวิเคราะห์รหัสผลลัพธ์ของจำนวนเต็ม Valueof, parsetint () string.valueof ใน Java แนะนำให้คุณรู้จักโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!