Saya mendapat pertanyaan sederhana di Jawa: Bagaimana saya bisa mengkonversi String
yang diperoleh oleh Long.toString()
ke long
?
Saya mendapat pertanyaan sederhana di Jawa: Bagaimana saya bisa mengkonversi String
yang diperoleh oleh Long.toString()
ke long
?
Jawaban:
Menggunakan 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
Untuk mengonversi String menjadi Long (objek), gunakanLong.valueOf(String s).longValue();
Lihat tautan
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) - jelas harus berhati-hati untuk melindungi terhadap non-angka jika itu mungkin dalam kode Anda.
Pendekatan terbaik adalah Long.valueOf(str)
karena ini bergantung pada Long.valueOf(long)
yang menggunakan cache internal sehingga lebih efisien karena akan digunakan kembali jika diperlukan contoh cache dari Long
mulai dari -128
untuk 127
dimasukkan.
Mengembalikan
Long
instance yang mewakili nilai panjang yang ditentukan. Jika instance Long baru tidak diperlukan, metode ini umumnya harus digunakan dalam preferensi untuk konstruktorLong(long)
, karena metode ini cenderung menghasilkan kinerja ruang dan waktu yang jauh lebih baik dengan caching nilai yang sering diminta. Perhatikan bahwa tidak seperti metode yang sesuai di kelas Integer, metode ini tidak diperlukan untuk men-cache nilai dalam rentang tertentu.
Berkat auto-unboxing yang memungkinkan untuk mengubah instance kelas wrapper menjadi tipe primitif yang sesuai, kodenya kemudian menjadi:
long val = Long.valueOf(str);
Harap dicatat bahwa kode sebelumnya masih dapat membuang NumberFormatException
jika yang disediakan String
tidak cocok dengan yang ditandatangani long
.
Secara umum, itu adalah praktik yang baik untuk menggunakan static
metode pabrik valueOf(str)
kelas wrapper seperti Integer
, Boolean
, Long
, ... karena kebanyakan dari mereka menggunakan kembali kasus setiap kali itu mungkin membuat mereka berpotensi lebih efisien dalam hal jejak memori dibandingkan yang sesuai parse
metode atau konstruktor .
Kutipan dari Java Efektif yang Item 1
ditulis oleh Joshua Bloch :
Anda sering dapat menghindari membuat objek yang tidak perlu dengan menggunakan metode pabrik statis (Item 1) sebagai preferensi untuk konstruktor pada kelas yang tidak dapat diubah yang menyediakan keduanya. Misalnya, metode pabrik statis
Boolean.valueOf(String)
hampir selalu lebih disukai daripada konstruktorBoolean(String)
. Konstruktor membuat objek baru setiap kali dipanggil, sedangkan metode pabrik statis tidak pernah diperlukan untuk melakukannya dan tidak akan dalam praktik.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
dan Long number = Long.valueOf(Long.parseString("123")
akhirnya melakukan hal yang hampir sama. Apa yang Anda lakukan ingin berhati-hati tentang tidak memanggil konstruktor dari kelas primitif kotak - yang dapat menjadi boros. Jadi jangan menulisLong number = new Long(parseLong("123"))
Ada beberapa cara untuk mengubah string menjadi 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();
Kita dapat mempersingkat menjadi:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
Atau hanya
long number = new Long("1234").longValue();
4) Menggunakan format Decemal:
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.");
}
Cukup sederhana, gunakan
Long.valueOf(String s);
Sebagai contoh:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
Kamu sudah selesai!!!
Bagi mereka yang beralih ke Kotlin cukup gunakan
string.toLong()
Itu akan memanggil di Long.parseLong(string)
bawah tenda
Jika Anda menggunakan Peta tanpa generik, maka Anda perlu mengubah nilainya menjadi String dan kemudian mencoba mengubahnya menjadi Long. Di bawah ini adalah contoh kode
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);