Saya punya pertanyaan sederhana dalam Java: Bagaimana saya bisa mengubah String
yang diperoleh dengan Panjang.toString()
untuk lama
?
Gunakan Lama.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 mengkonversi String ke Panjang (objek), menggunakan Lama.valueOf(String s).longValue();
Lihat link
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());
}
}
}
Lama.valueOf(String s) - jelas karena perawatan harus diambil untuk melindungi terhadap non-angka jika itu adalah mungkin dalam kode anda.
Pendekatan yang terbaik adalah Lama.valueOf(str)
hal ini bergantung pada Lama.valueOf(lama)
yang menggunakan cache internal sehingga lebih efisien karena akan digunakan kembali jika diperlukan cache contoh Panjang
dari -128
untuk 127
disertakan.
Kembali
Lama
contoh yang mewakili ditentukan nilai panjang. Jika Panjang baru misalnya tidak diperlukan, metode ini umumnya harus digunakan dalam preferensi untuk konstruktorPanjang(lama)
, karena metode ini adalah mungkin untuk hasil yang lebih baik secara signifikan ruang dan waktu kinerja dengan caching sering diminta nilai-nilai. Perhatikan bahwa tidak seperti metode yang sesuai dalam bilangan Bulat kelas, metode ini tidak diperlukan untuk cache nilai-nilai dalam kisaran tertentu.
Terima kasih untuk auto-unboxing yang memungkinkan untuk mengkonversi wrapper class's contoh ke yang sesuai tipe primitif, kode kemudian akan:
long val = Long.valueOf(str);
Harap dicatat bahwa kode sebelumnya masih bisa melempar NumberFormatException
jika disediakan String
doesn't pertandingan dengan menandatangani lama
.
Secara umum, itu adalah praktik yang baik untuk menggunakan statis
pabrik metode valueOf(str)
dari kelas wrapper seperti Integer
, Boolean
, Lama
, ... karena sebagian besar dari mereka menggunakan kembali contoh setiap kali itu mungkin membuat mereka berpotensi lebih efisien dalam jangka jejak memori dari yang sesuai mengurai
metode atau konstruktor.
Kutipan dari Efektif Jawa Item 1
yang ditulis oleh Joshua Bloch:
Anda dapat sering menghindari menciptakan benda yang tidak perlu dengan menggunakan statis pabrik metode (Item 1) dalam preferensi untuk konstruktor pada berubah kelas yang menyediakan keduanya. Misalnya, statis pabrik metode
Boolean.valueOf(String)
hampir selalu lebih baik untuk konstruktorBoolean(String)
. Konstruktor menciptakan objek baru setiap kali itu disebut, sedangkan statis pabrik metode ini tidak pernah diperlukan untuk melakukannya dan tidak dalam praktek.
Ada beberapa cara untuk mengkonversi string ke Integer :
long l = Long.parseLong("200");
String numberAsString = "1234";
long number = Long.valueOf(numberAsString).longValue();
String numberAsString = "1234";
Long longObject = new Long(numberAsString);
long number = longObject.longValue();
Kita dapat mempersingkat untuk:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
Atau
long number = new Long("1234").longValue();
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.");
}
Dalam kasus anda menggunakan Peta dengan keluar generik, maka anda perlu mengkonversi nilai ke String dan kemudian mencoba untuk mengkonversi ke yang Lama. 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);