Java Convert String to Int - Java 147

Java Convert String to Int – Java 147

Java 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 ,因為可能會為應用程序帶來更好的整體佔用空間。

發佈留言