web-dev-qa-db-ja.com

JavaでStringをlongに変換する方法

私はJavaで簡単な質問を受けました:Long.toString()によって得られたStringlongに変換するにはどうすればいいですか?

372
Belgi

Long.parseLong() を使用

 Long.parseLong("0", 10)        // returns 0L
 Long.parseLong("473", 10)      // returns 473L
 Long.parseLong("-0", 10)       // returns 0L
 Long.parseLong("-FF", 16)      // returns -255L
 Long.parseLong("1100110", 2)   // returns 102L
 Long.parseLong("99", 8)        // throws a NumberFormatException
 Long.parseLong("Hazelnut", 10) // throws a NumberFormatException
 Long.parseLong("Hazelnut", 36) // returns 1356099454469L
 Long.parseLong("999")          // returns 999L
629

String Long (object)に変換するには、Long.valueOf(String s).longValue();を使用します。

link を参照してください。

136
coreyspitzer
public class StringToLong {

   public static void main (String[] args) {

      // String s = "fred";    // do this if you want an exception

      String s = "100";

      try {
         long l = Long.parseLong(s);
         System.out.println("long l = " + l);
      } catch (NumberFormatException nfe) {
         System.out.println("NumberFormatException: " + nfe.getMessage());
      }

   }
}
26
Genjuro

Long.valueOf(String s) - コード内で可能であれば、明らかに十分な注意を払って非数値から保護する必要があります。

11
markdsievers

-128から127へとキャッシュされたLongのインスタンスを必要に応じて再利用するため、内部キャッシュを使用する Long.valueOf(str) に依存しているため、最善のアプローチは Long.valueOf(long) です。

指定されたlong値を表すLongインスタンスを返します。新しいLongインスタンスが必要ない場合、このメソッドは頻繁に要求される値をキャッシュすることによってスペースと時間のパフォーマンスを大幅に向上させる可能性があるため、通常はコンストラクタLong(long)より優先して使用します。 Integerクラスの対応するメソッドとは異なり、このメソッドは特定の範囲内の値をキャッシュするためには必要ありません。

auto-unboxing のおかげで、ラッパークラスのインスタンスを対応するプリミティブ型に変換できるので、コードは次のようになります。

long val = Long.valueOf(str);

提供されたNumberFormatExceptionが署名されたStringと一致しない場合、前のコードは依然としてlongをスローする可能性があることに注意してください。

一般的に言って、staticIntegerBooleanのようなラッパークラスのLongファクトリメソッドvalueOf(str)を使用するのは良い習慣です。対応するparseメソッドまたはコンストラクタ.


Joshua Blochによって書かれた Effective JavaItem 1からの抜粋:

両方を提供する不変クラスのコンストラクタよりも静的ファクトリメソッド(項目1)を使用することで、不要なオブジェクトの作成を避けることができます。たとえば、静的ファクトリメソッドBoolean.valueOf(String)は、ほとんどの場合コンストラクタBoolean(String)より優先されます。コンストラクタは呼び出されるたびに新しいオブジェクトを作成しますが、静的ファクトリメソッドは必須ではなく、実際には成功しません。

4
Nicolas Filotto

Kotlinに切り替えた人のために使用してください
string.toLong()
それはボンネットの下でLong.parseLong(string)を呼び出すでしょう

0
Leo Droidcoder

文字列を整数に変換する方法がいくつかあります

1)

long l = Long.parseLong("200"); 

2)

String numberAsString = "1234";
long number = Long.valueOf(numberAsString).longValue();

3)

 String numberAsString = "1234";
  Long longObject = new Long(numberAsString);
  long number = longObject.longValue();

短縮することができます。

String numberAsString = "1234";
long number = new Long(numberAsString).longValue();

あるいは単に

long number = new Long("1234").longValue();

4) 暫定フォーマットの使用:

    String numberAsString = "1234";
      DecimalFormat decimalFormat = new DecimalFormat("#");
     try {
        long number = decimalFormat.parse(numberAsString).longValue();
        System.out.println("The number is: " + number);
    } catch (ParseException e) {
     System.out.println(numberAsString + " is not a valid number.");
   }
0