Integer.parseInt vs Integer.valueOf

Integer.parseInt vs Integer.valueOf

在Java需要將String轉整數有兩個方法可以使用,
這裡將介紹兩者的不同與使用時機。

Integer.parseInt

1
2
3
4
public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); }

Integer.parseInt return int

Integer.valueOf

1
2
3
4
5
6
7
public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); }

Integer.valueOf return Integer

public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
當 i 在 -128 ~ 127 之間會用cache中取得Integer,若不在該範圍會new Integer(i)。

使用時機

1
2
3
如果需要int,使用Integer.parseInt()方法。
如果需要Integer,使用Integer.valueOf()方法。
同樣Integer、Long、Double和Float都是一樣的道理。