@ Belgi - Long.valueOf mengembalikan Long, bukan string.
Don Roby
4
@ MikeDaniels, Karena ini adalah cara yang sangat tidak langsung untuk melakukannya. Lihat docs.oracle.com/javase/7/docs/api/java/lang/… , ia mengembalikan objek Panjang bukan panjang primitif.
Pacerier
Long.valueOf (String s) memberikan Long (objek) dan Long.valueOf (String s) .longValue () memberikan panjang (primitif).
Champ
27
publicclassStringToLong{publicstaticvoid main (String[] args){// String s = "fred"; // do this if you want an exceptionString s ="100";try{long l =Long.parseLong(s);System.out.println("long l = "+ l);}catch(NumberFormatException nfe){System.out.println("NumberFormatException: "+ nfe.getMessage());}}}
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 Longmulai dari -128untuk 127dimasukkan.
Mengembalikan Longinstance yang mewakili nilai panjang yang ditentukan. Jika instance Long baru tidak diperlukan, metode ini umumnya harus digunakan dalam preferensi untuk konstruktor Long(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 NumberFormatExceptionjika yang disediakan Stringtidak cocok dengan yang ditandatangani long.
Secara umum, itu adalah praktik yang baik untuk menggunakan staticmetode 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 parsemetode atau konstruktor .
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 konstruktor Boolean(String). Konstruktor membuat objek baru setiap kali dipanggil, sedangkan metode pabrik statis tidak pernah diperlukan untuk melakukannya dan tidak akan dalam praktik.
Perlu dicatat bahwa auto-unboxing adalah "desugared" oleh kompiler menjadi, untuk kasus lama -> Long, Long.valueOf (primitiveLong). Jadi 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"))
Ian Robertson
4
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 =newLong(numberAsString);long number = longObject.longValue();
Kita dapat mempersingkat menjadi:
String numberAsString ="1234";long number =newLong(numberAsString).longValue();
Atau hanya
long number =newLong("1234").longValue();
4) Menggunakan format Decemal:
String numberAsString ="1234";DecimalFormat decimalFormat =newDecimalFormat("#");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.");}
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 =newHashMap();
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);
Jawaban:
Menggunakan
Long.parseLong()
sumber
Untuk mengonversi String menjadi Long (objek), gunakan
Long.valueOf(String s).longValue();
Lihat tautan
sumber
java.lang.Long
sumber
Long.valueOf (String s) - jelas harus berhati-hati untuk melindungi terhadap non-angka jika itu mungkin dalam kode Anda.
sumber
Pendekatan terbaik adalah
Long.valueOf(str)
karena ini bergantung padaLong.valueOf(long)
yang menggunakan cache internal sehingga lebih efisien karena akan digunakan kembali jika diperlukan contoh cache dariLong
mulai dari-128
untuk127
dimasukkan.Berkat auto-unboxing yang memungkinkan untuk mengubah instance kelas wrapper menjadi tipe primitif yang sesuai, kodenya kemudian menjadi:
Harap dicatat bahwa kode sebelumnya masih dapat membuang
NumberFormatException
jika yang disediakanString
tidak cocok dengan yang ditandatanganilong
.Secara umum, itu adalah praktik yang baik untuk menggunakan
static
metode pabrikvalueOf(str)
kelas wrapper sepertiInteger
,Boolean
,Long
, ... karena kebanyakan dari mereka menggunakan kembali kasus setiap kali itu mungkin membuat mereka berpotensi lebih efisien dalam hal jejak memori dibandingkan yang sesuaiparse
metode atau konstruktor .Kutipan dari Java Efektif yang
Item 1
ditulis oleh Joshua Bloch :sumber
Long number = Long.valueOf("123")
,Long number = Long.parseLong("123")
danLong 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)
2)
3)
Kita dapat mempersingkat menjadi:
Atau hanya
4) Menggunakan format Decemal:
sumber
Cukup sederhana, gunakan
Long.valueOf(String s);
Sebagai contoh:
Kamu sudah selesai!!!
sumber
Bagi mereka yang beralih ke Kotlin cukup gunakan
string.toLong()
Itu akan memanggil di
Long.parseLong(string)
bawah tendasumber
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
sumber