Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java: แปลง String เป็น Integer - คู่มือครบวงจรและ Best Practices

การแปลง String เป็น int ใน Java มีหลายวิธี แต่ละวิธีมีความแตกต่างเล็กน้อย บทความนี้จะครอบคลุมทุกวิธีพร้อม best practices

วิธีหลัก 3 วิธี (String มีแต่ตัวเลข)

1. Integer.parseInt() → คืนค่า primitive int

String numberStr = "1234";
int number = Integer.parseInt(numberStr);
System.out.println(number); // 1234

✅ แนะนำสำหรับใช้งานทั่วไป - ประสิทธิภาพดี ไม่สร้าง Object เพิ่ม

2. Integer.valueOf() → คืนค่า Integer object

String numberStr = "1234";
Integer number = Integer.valueOf(numberStr);
System.out.println(number); // 1234

✅ ใช้เมื่อต้องการ Integer object (เช่น ใส่ใน Collection) - ใช้ cache สำหรับค่า -128 ถึง 127

3. Integer.decode() → รองรับฐานเลขต่างๆ

Integer.decode("1234");     // 1234 (ฐาน 10)
Integer.decode("0xFF");     // 255 (ฐาน 16 - hex)
Integer.decode("0177");     // 127 (ฐาน 8 - octal)
Integer.decode("#FF");      // 255 (ฐาน 16 ด้วย #)

✅ ใช้เมื่อ String มี prefix แสดงฐานเลข (0x, 0, #)

การจัดการ Exception

ทุกเมธอดข้างต้นจะโยน NumberFormatException ถ้า String ไม่ใช่ตัวเลข

public static int safeParseInt(String str, int defaultValue) {
    try {
        return Integer.parseInt(str);
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

4. Apache Commons NumberUtils (Null-Safe)

Dependency (Maven)

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.14.0</version>
</dependency>

การใช้งาน

import org.apache.commons.lang3.math.NumberUtils;

NumberUtils.toInt("1234");        // 1234
NumberUtils.toInt("abc", 0);      // 0 (ค่า default ถ้า parse ไม่ได้)
NumberUtils.toInt(null, -1);      // -1 (null-safe!)
NumberUtils.createInteger("123"); // คืนค่า Integer object

✅ แนะนำเมื่อ String อาจเป็น null หรือต้องการ default value

กรณี String มีตัวอักษรผสม (เช่น "1234abcd")

ต้องใช้ Regex แยกตัวเลขก่อน แล้วค่อยแปลง

String mixed = "1234abcd";
String numbersOnly = mixed.replaceAll("\\D+", ""); // "1234"
int number = Integer.parseInt(numbersOnly);

สรุป: การเลือกใช้

สถานการณ์วิธีที่แนะนำ
ใช้งานทั่วไป ต้องการ primitive intInteger.parseInt()
ต้องการ Integer object / ใช้ใน CollectionInteger.valueOf()
String มี prefix ฐานเลข (0x, #, 0)Integer.decode()
String อาจเป็น null / ต้องการ default valueNumberUtils.toInt()

บทความเกี่ยวข้อง