Javaで文字列をlongに変換する方法は?


400

私はJavaで簡単な質問を得た:どのように私は変換することができますStringして得られたものをLong.toString()しますかlong


1
Javaで文字列をlongに変換する方法のを含む5つの方法
Somnath Muluk

1
内部的には、すべてのバージョンがメソッドLong.parseLong(String)を呼び出します。直接使用してください。いくつかのCPUサイクルを節約します。
ロケシュ

この1を参照してください:developer.android.com/reference/java/lang/...
Mihir Trivediの

回答:


664

使用する 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

2
「ランチ/ディナー」はどうですか?
Narendra Sorathiya

素敵なコード。その仕事
サーマジット

140

文字列Long(オブジェクト)に変換するには、以下を使用しますLong.valueOf(String s).longValue();

リンクを見る


1
それはOPが求めていることではありません。
Christian Mann

7
@ベルギ。いいえ、戻りますjava.lang.Long
Alexander Pogrebnyak

@Belgi-Long.valueOfは文字列ではなくLongを返します。
Don Roby、2011年

4
@MikeDaniels、これは非常に間接的な方法だからです。docs.oracle.com/javase/7/docs/api/java/lang/…を参照してください。これはプリミティブlongではなくLong オブジェクトを返します。
Pacerier 2014年

Long.valueOf(String s)はLong(オブジェクト)を提供し、Long.valueOf(String s).longValue()はlong(プリミティブ)を提供します。
2016

27
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());
      }

   }
}


5

最善のアプローチは、Long.valueOf(str)それが依存するようLong.valueOf(long)にキャッシュされたインスタンスを必要に応じて、それは再利用しますので、それをより効率的に内部キャッシュを使用しているLongから行く-128127含まれています。

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

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

long val = Long.valueOf(str);

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

一般的に言えば、使用することをお勧めしますstaticファクトリメソッドvalueOf(str)のようなラッパークラスのをIntegerBooleanLongそれは潜在的に、より効率的なメモリフットプリントの項で対応するよりも、それらを作ることも可能である時はいつでも、それらのほとんどは、インスタンスを再利用するので...、parseメソッドやコンストラクタ。


Joshua Blochによって書かれた効果的なJava からの抜粋:Item 1

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


1
long-> Long、Long.valueOf(primitiveLong)の場合、自動unboxingはコンパイラによって「desugared」されることに注意してください。ですから Long number = Long.valueOf("123")Long number = Long.parseLong("123")およびLong number = Long.valueOf(Long.parseString("123")すべてのほとんど同じことをやってしまいます。あなたは何については、箱入りのプリミティブクラスのコンストラクタを呼び出していないように注意してくださいしたい-それは無駄なことができます。だから書いてはいけませんLong number = new Long(parseLong("123"))
イアンロバートソン

4

文字列をIntegerに変換する方法はいくつかあります

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) 10進数形式を使用:

    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.");
   }

1

それは非常に簡単です、使用してください Long.valueOf(String s);

例えば:

String s;
long l;

Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);

完了しました!!!



-1

ジェネリックなしでマップを使用している場合は、値を文字列に変換してからLongに変換する必要があります。以下はサンプルコードです

    Map map = new HashMap();

    map.put("name", "John");
    map.put("time", "9648512236521");
    map.put("age", "25");

    long time = Long.valueOf((String)map.get("time")).longValue() ;
    int age = Integer.valueOf((String)  map.get("aget")).intValue();
    System.out.println(time);
    System.out.println(age);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.