Table of Contents
ToggleJava Convert String to Int
將 String 轉換為 int 或 Integer 是 Java 中常見的操作,可以使用 parseInt 、 valueOf 等方法進行操作, Java String Int 任務是將該字串轉換為整數,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- conversion
| +- string
| +- StringToIntTest.java
單元測試
Java String to Int 提供字串轉換成整數等操作。
parseInt
Java String to Int 使用 Integer.parseInt 轉換成整數,此方法接受另一個參數來更改基數,例如 16(十六進制)或 2(二進制)。
@Test
public void parseInt() {
String value = "147";
int result = Integer.parseInt(value);
System.out.println(result);
assertEquals(147, result);
value = "-20";
result = Integer.parseInt(value);
System.out.println(result);
assertEquals(-20, result);
value = "20";
// (2)*16^1 + (0)*16^0 = 32
// 32 + 0 = 32
result = Integer.parseInt(value, 16);
System.out.println(result);
assertEquals(32, result);
value = "101010";
// (1)*2^5 + (0)*2^4 + (1)*2^3 + (0)*2^2 + (1)*2^1 + (0)*2^0 = 42
// 32 + 0 + 8 + 0 + 2 = 42
result = Integer.parseInt(value, 2);
System.out.println(result);
assertEquals(42, result);
}
147
-20
32
42
parseIntThrowException
Java String to Int 使用 Integer.parseInt 轉換成整數,輸入不合格式的字串,會拋出例外。
@Test(expected = NumberFormatException.class)
public void parseIntThrowException() {
String value = "147";
int result = Integer.parseInt(value);
System.out.println(result);
assertEquals(147, result);
value = "java-147";
result = Integer.parseInt(value);
System.out.println(result);
}
147
java.lang.NumberFormatException: For input string: "java-147"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at org.ruoxue.java_147.string.StringToIntTest.parseIntThrowException(StringToIntTest.java:44)
valueOf
Java String to Int 使用 Integer.valueOf 轉換成整數。
@Test
public void valueOf() {
String value = "147";
Integer result = Integer.valueOf(value);
System.out.println(result);
assertEquals(147, result.intValue());
value = "-20";
result = Integer.valueOf(value);
System.out.println(result);
assertEquals(-20, result.intValue());
value = "20";
// (2)*16^1 + (0)*16^0 = 32
result = Integer.valueOf(value, 16);
System.out.println(result);
assertEquals(32, result.intValue());
value = "101010";
// (1)*2^5 + (0)*2^4 + (1)*2^3 + (0)*2^2 + (1)*2^1 + (0)*2^0 = 42
// 32 + 0 + 8 + 0 + 2 = 42
result = Integer.valueOf(value, 2);
System.out.println(result);
assertEquals(42, result.intValue());
}
147
-20
32
42
valueOfThrowException
Convert String to Int in Java 使用 Integer.valueOf 轉換成整數,輸入不合格式的字串,會拋出例外。
@Test(expected = NumberFormatException.class)
public void valueOfThrowException() {
String value = "147";
Integer result = Integer.valueOf(value);
System.out.println(result);
assertEquals(147, result.intValue());
value = "java-147";
result = Integer.valueOf(value);
System.out.println(result);
}
147
java.lang.NumberFormatException: For input string: "java-147"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at org.ruoxue.java_147.string.StringToIntTest.valueOfThrowException(StringToIntTest.java:82)
StringToIntTest.java
Convert String to Int in Java 新增單元測試,驗證是否符合預期。
package org.ruoxue.java_147.conversion.string;
import static org.junit.Assert.*;
import org.junit.Test;
public class StringToIntTest {
@Test
public void parseInt() {
String value = "147";
int result = Integer.parseInt(value);
System.out.println(result);
assertEquals(147, result);
value = "-20";
result = Integer.parseInt(value);
System.out.println(result);
assertEquals(-20, result);
value = "20";
// (2)*16^1 + (0)*16^0 = 32
// 32 + 0 = 32
result = Integer.parseInt(value, 16);
System.out.println(result);
assertEquals(32, result);
value = "101010";
// (1)*2^5 + (0)*2^4 + (1)*2^3 + (0)*2^2 + (1)*2^1 + (0)*2^0 = 42
// 32 + 0 + 8 + 0 + 2 = 42
result = Integer.parseInt(value, 2);
System.out.println(result);
assertEquals(42, result);
}
@Test(expected = NumberFormatException.class)
public void parseIntThrowException() {
String value = "147";
int result = Integer.parseInt(value);
System.out.println(result);
assertEquals(147, result);
value = "java-147";
result = Integer.parseInt(value);
System.out.println(result);
}
@Test
public void valueOf() {
String value = "147";
Integer result = Integer.valueOf(value);
System.out.println(result);
assertEquals(147, result.intValue());
value = "-20";
result = Integer.valueOf(value);
System.out.println(result);
assertEquals(-20, result.intValue());
value = "20";
// (2)*16^1 + (0)*16^0 = 32
result = Integer.valueOf(value, 16);
System.out.println(result);
assertEquals(32, result.intValue());
value = "101010";
// (1)*2^5 + (0)*2^4 + (1)*2^3 + (0)*2^2 + (1)*2^1 + (0)*2^0 = 42
// 32 + 0 + 8 + 0 + 2 = 42
result = Integer.valueOf(value, 2);
System.out.println(result);
assertEquals(42, result.intValue());
}
@Test(expected = NumberFormatException.class)
public void valueOfThrowException() {
String value = "147";
Integer result = Integer.valueOf(value);
System.out.println(result);
assertEquals(147, result.intValue());
value = "java-147";
result = Integer.valueOf(value);
System.out.println(result);
}
}
心得分享
String to Int in Java 將 String 實例轉換為 int 或 Integer 實例的多種方法, parseInt 和 valueOf 方法似乎完全相同,分別傳回基本型別 int 及物件 Integer , valueOf 方法在內部委託給 parseInt 方法,這兩種方法之間存在一個細微差別: valueOf 方法在內部使用整數快取,快取將為 -128 和 127 之間的數字返回相同的 Integer 實例, Convert String to Int in Java 建議使用 valueOf 而不是 parseInt 來取得物件 Integer ,因為可能會為應用程序帶來更好的整體佔用空間。