如何将String转换为int?
"1234" → 1234
如何将String转换为int?
"1234" → 1234
当前回答
可以通过七种方式实现:
import com.google.common.primitives.Ints;
import org.apache.commons.lang.math.NumberUtils;
String number = "999";
Ints.tryParse:int result=Ints.tryParse(数字);NumberUtils.createInteger:整数结果=NumberUtils.createInteger(数字);应用到内部的数字:int result=NumberUtils.toInt(数字);整数值:整数结果=Integer.valueOf(数字);整数.分析整数:int result=Integer.parseInt(数字);整数代码:int result=Integer.decode(数字);整数.分析未签名:int result=Integer.parseUnsignedInt(数字);
其他回答
例如,这里有两种方法:
Integer x = Integer.valueOf(str);
// or
int y = Integer.parseInt(str);
这些方法略有不同:
valueOf返回java.lang.Integer的新实例或缓存实例parseInt返回基元int。
所有情况都是一样的:Short.valueOf/parseShort、Long.valueOf/parseLong等。
除了前面的答案,我还想添加几个功能。以下是使用时的结果:
public static void main(String[] args) {
System.out.println(parseIntOrDefault("123", 0)); // 123
System.out.println(parseIntOrDefault("aaa", 0)); // 0
System.out.println(parseIntOrDefault("aaa456", 3, 0)); // 456
System.out.println(parseIntOrDefault("aaa789bbb", 3, 6, 0)); // 789
}
实施:
public static int parseIntOrDefault(String value, int defaultValue) {
int result = defaultValue;
try {
result = Integer.parseInt(value);
}
catch (Exception e) {
}
return result;
}
public static int parseIntOrDefault(String value, int beginIndex, int defaultValue) {
int result = defaultValue;
try {
String stringValue = value.substring(beginIndex);
result = Integer.parseInt(stringValue);
}
catch (Exception e) {
}
return result;
}
public static int parseIntOrDefault(String value, int beginIndex, int endIndex, int defaultValue) {
int result = defaultValue;
try {
String stringValue = value.substring(beginIndex, endIndex);
result = Integer.parseInt(stringValue);
}
catch (Exception e) {
}
return result;
}
import java.util.*;
public class strToint {
public static void main(String[] args) {
String str = "123";
byte barr[] = str.getBytes();
System.out.println(Arrays.toString(barr));
int result = 0;
for(int i = 0; i < barr.length; i++) {
//System.out.print(barr[i]+" ");
int ii = barr[i];
char a = (char) ii;
int no = Character.getNumericValue(a);
result = result * 10 + no;
System.out.println(result);
}
System.out.println("result:"+result);
}
}
手动执行:
public static int strToInt(String str){
int i = 0;
int num = 0;
boolean isNeg = false;
// Check for negative sign; if it's there, set the isNeg flag
if (str.charAt(0) == '-') {
isNeg = true;
i = 1;
}
// Process each character of the string;
while( i < str.length()) {
num *= 10;
num += str.charAt(i++) - '0'; // Minus the ASCII code of '0' to get the value of the charAt(i++).
}
if (isNeg)
num = -num;
return num;
}
实现这一点的两种主要方法是使用Integer类的方法valueOf()和方法parseInt()。
假设给你一个这样的字符串
String numberInString = "999";
然后可以使用
int numberInInteger = Integer.parseInt(numberInString);
或者,您可以使用
int numberInInteger = Integer.valueOf(numberInString);
但这里的问题是,Integer.valueOf()方法在Integer类中有以下实现:
public static Integer valueOf(String var0, int var1) throws NumberFormatException {
return parseInt(var0, var1);
}
如您所见,Integer.valueOf()在内部调用Integer.parseInt()本身。此外,parseInt()返回int,valueOf()则返回Integer