私はJavaで簡単な質問を得た:どのように私は変換することができますString
して得られたものをLong.toString()
しますかlong
?
私はJavaで簡単な質問を得た:どのように私は変換することができますString
して得られたものをLong.toString()
しますかlong
?
回答:
使用する 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
文字列をLong(オブジェクト)に変換するには、以下を使用しますLong.valueOf(String s).longValue();
リンクを見る
java.lang.Long
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());
}
}
}
Long.valueOf(String s) -コードで可能であれば、非数値から保護するために当然の注意が必要です。
最善のアプローチは、Long.valueOf(str)
それが依存するようLong.valueOf(long)
にキャッシュされたインスタンスを必要に応じて、それは再利用しますので、それをより効率的に内部キャッシュを使用しているLong
から行く-128
に127
含まれています。
Long
指定されたlong値を表すインスタンスを返します。新しいLongインスタンスが必要ない場合、このメソッドはLong(long)
、頻繁に要求される値をキャッシュすることにより、スペースと時間のパフォーマンスが大幅に向上する可能性が高いため、通常、コンストラクターよりも優先して使用する必要があります。Integerクラスの対応するメソッドとは異なり、このメソッドは特定の範囲内の値をキャッシュする必要がないことに注意してください。
ラッパークラスのインスタンスを対応するプリミティブ型に変換できる自動ボックス化解除のおかげで、コードは次のようになります。
long val = Long.valueOf(str);
NumberFormatException
提供さString
れたものが署名されたと一致しない場合でも、以前のコードはをスローする可能性があることに注意してくださいlong
。
一般的に言えば、使用することをお勧めしますstatic
ファクトリメソッドvalueOf(str)
のようなラッパークラスのをInteger
、Boolean
、Long
それは潜在的に、より効率的なメモリフットプリントの項で対応するよりも、それらを作ることも可能である時はいつでも、それらのほとんどは、インスタンスを再利用するので...、parse
メソッドやコンストラクタ。
Joshua Blochによって書かれた効果的なJava からの抜粋:Item 1
多くの場合、両方を提供する不変クラスのコンストラクターに優先して静的ファクトリーメソッド(アイテム1)を使用することで、不要なオブジェクトの作成を回避できます。たとえば、静的ファクトリーメソッド
Boolean.valueOf(String)
は、ほとんどの場合、コンストラクターよりも望ましい方法 ですBoolean(String)
。コンストラクターは、呼び出されるたびに新しいオブジェクトを作成しますが、静的ファクトリーメソッドは、その必要はなく、実際にはありません。
Long number = Long.valueOf("123")
、Long number = Long.parseLong("123")
およびLong number = Long.valueOf(Long.parseString("123")
すべてのほとんど同じことをやってしまいます。あなたは何かについては、箱入りのプリミティブクラスのコンストラクタを呼び出していないように注意してくださいしたい-それは無駄なことができます。だから書いてはいけませんLong number = new Long(parseLong("123"))
文字列を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.");
}
Kotlinに切り替える人のためだけに使用
string.toLong()
呼ぶことをLong.parseLong(string)
ボンネットの下に
ジェネリックなしでマップを使用している場合は、値を文字列に変換してから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);