1、シーン
あなたは文字列の英数字がint型に変換入力する必要がある場合は、私たちが使用する可能性がありますInteger.valueOf()またはInteger.parseInt()、両方の機能は、デジタル文字整数に変換することができます。
図2に示すように、ソース
以下のためのInteger.valueOf(Stringを)します:
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
Integer.valueOf(文字列S)最初の()(iは整数)をInteger.valueOf、intに文字列を変換するためのparseIntによる整数INTそのパッケージタイプの基本データ型の変換。
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Integer.parseInt(文字列s)を、それが直接呼び出しのparseInt(Stringを、int型の基数)は、文字列のint型に変換されますされています。
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
3.おわりに
Integer.valueOf(文字列S)とInteger.parseInt(String s)文字の戻り値と同じタイプではありません。Integer.valueOf(String s)文字パッケージタイプ整数を返し、Integer.parseInt(String s)文字の基本データ型intを返します。
あなたが唯一の文字列型の値に対応する整数値を取得する必要がある場合、そのような値は、梱包作業がint整数としてパッケージ化された後、整形手術を取得するために行う必要があるのでそう、我々は、のvalueOfを呼び出す必要はありません。使用Integer.parseInt(文字列s)は、より良いです。
確認してください4.
試験の例では、この方法は、より効率的です。
public class App {
public static void main(String[] args) {
String str = "123";
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
Integer.parseInt(str);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
}
}
3回の実行の結果:656614614
public class App {
public static void main(String[] args) {
String str = "123";
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
Integer.valueOf(str);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
}
}
3回の実行の結果:689697727
また、これはInteger.parseInt(String s)文字Integer.valueOf(Stringを)よりも効率的で、説明します