Java转换字符串为int:Integer.valueOf()和Integer.parseInt()

Java里转换字符串为整型有两种方式:

  • Integer.valueOf(String str)
  • Integer.parseInt(String str)

示例

String str = "100";
Integer i1 id= Integer.valueOf(str);
int x2 = Integer.parseInt(str);

从方法的签名看,两者不同的地方是它们返回的类型不一样。valueOf返回的是包装类型Integer,而parseInt返回的基本类型int。

查看valueOf的实现:

public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}

valueOf实质是调用parseInt,然后再调用Integer.valueOf(int i);

进入Integer.valueOf(int i)

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

其中 IntegerCache.low = -128,IntegerCache.high=127。当i值在-128到127的范围返回的是缓存在IntegerCache里的对象,超出范围返回新的整型。

所以使用Integer.valueOf返回的Integer型数据,建议不要直接做相等比较

System.out.println(Integer.valueOf(20) == Integer.valueOf(20));  //true
System.out.println(Integer.valueOf(200) == Integer.valueOf(200)); //false

总结

Integer.valueOf(str) 等同于new Integer(Integer.parseInt(str))。

版权声明:著作权归作者所有。

相关推荐

Swift 4转换html为字符串文本

Swift 4可以添加extension来把html转换为字符串。String添加扩展extension String {     var html2AttributedString: NSAttributedString? {       

Python判断字符串是否为数字

Python判断一个字符串是否为数字,可以分为两种情况考虑。字符为纯数字如果需要检测的数字为纯数字,不包括负号,小数点等,可以使用字符串的isdigit()函数来判断>>> a = "001" >>> a.isdigit() True >>> a = &q

Python:字符串和datetime的转换

Python的字符串和时间的转换可以分别使用strptime和strftime。strptime(string parse time)datetime.strptime(date_string, format),根据format指定的时间格式解析用于表示时间的字符串date_string。>>>from datetime import&nb

Swift日期和字符串互相转换(Swift 3/Swift 4)

Swift随着版本的升级,日期类都会有一点变化。所以各个版本的Swift日期和字符串的转换有所不同。Swift 4String转换为Datevar dateString = "2017-11-17" var dateFormatter = DateFormatter() // dateFormat

TypeScript:字符串转换为数字

在TypeScript,String转换为Number有以下方式:Number构造函数(推荐)let n = Number('1234') // 1234 let nan = Number('abcd') // NaN +号操作符let n = +'1234' 

Java 9:紧凑字符串(Compact String)

目前Java的String实现是把字符串存放在一个char类型的数组里,char占用两个字节(16位)。但是String作为很常用的类,在很多时候它只包含Latin-1里的字符,这些字符只需要一个字节(8位)存储,所以在这种情况下很容易造成空间的浪费。Java 9引进紧凑字符串来解决这个问题。使用UTF-16字符数组,或者是1字节的数组加上一个编码标识符来存储字符串。如果字符串的内容都是