In Java, we can use Integer.valueOf(String) to convert a String to an Integer object; For unparsable String, it throws NumberFormatException.
Integer.valueOf("1"); // ok
Integer.valueOf("+1"); // ok, result = 1
Integer.valueOf("-1"); // ok, result = -1
Integer.valueOf("100"); // ok
Integer.valueOf(" 1"); // NumberFormatException (contains space)
Integer.valueOf("1 "); // NumberFormatException (contains space)
Integer.valueOf("2147483648"); // NumberFormatException (Integer max 2,147,483,647)
Integer.valueOf("1.1"); // NumberFormatException (. or any symbol is not allowed)
Integer.valueOf("1-1"); // NumberFormatException (- or any symbol is not allowed)
Integer.valueOf(""); // NumberFormatException, empty
Integer.valueOf(" "); // NumberFormatException, (contains space)
Integer.valueOf(null); // NumberFormatException, null
1. Convert String to Integer
Below example uses Integer.valueOf(String) to convert a String “99” to an object Integer.
ConvertStringToInteger.java
package com.favtuts.string;
public class ConvertStringToInteger {
public static void main(String[] args) {
String number = "99";
// String to integer
Integer result = Integer.valueOf(number);
// 99
System.out.println(result);
}
}
Output
99
2. NumberFormatException
2.1 For unparsable String, the Integer.valueOf(String) throws NumberFormatException.
String number = "D99";
Integer result = Integer.valueOf(number);
Output
Exception in thread "main" java.lang.NumberFormatException: For input string: "D99"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:668)
at java.base/java.lang.Integer.valueOf(Integer.java:999)
at com.favtuts.string.ConvertStringToInteger.main(ConvertStringToInteger.java:10)
2.2 Try and catch the NumberFormatException.
ConvertStringToInteger.java
package com.favtuts.string;
public class ConvertStringToInteger {
public static void main(String[] args) {
String number = "D99";
try {
Integer result = Integer.valueOf(number);
System.out.println(result);
} catch (NumberFormatException e) {
//do something for the exception.
System.err.println("Invalid number format : " + number);
}
}
}
3. Convert String to Integer (Java 8 Optional)
Below is a Java 8 example of converting a String to an Integer object and returning an Optional<Integer>.
ConvertStringToIntegerJava8.java
package com.favtuts.string;
import java.util.Optional;
public class ConvertStringToIntegerJava8 {
public static void main(String[] args) {
String number = "99";
Optional<Integer> result = convertStringToInteger(number);
if (result.isPresent()) {
System.out.println(result.get());
} else {
System.err.println("Unable to convert the number : " + number);
}
}
private static Optional<Integer> convertStringToInteger(String input) {
if (input == null) return Optional.empty();
// remove spaces
input = input.trim();
if (input.isEmpty()) return Optional.empty();
try {
return Optional.of(Integer.valueOf(input));
} catch (NumberFormatException e) {
return Optional.empty();
}
}
}
Output
99
4. Integer.parseInt(String) vs Integer.valueOf(String)
The Integer.parseInt(String) convert a String to primitive type int; The Integer.valueOf(String) convert a String to a Integer object. For unparsable String, both methods throw NumberFormatException.
Integer.parseInt()– returns anint.Integer.valueOf()– returns anInteger.
int result1 = Integer.parseInt("100");
Integer result2 = Integer.valueOf("100");
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-string