Bagaimana cara mengubah String menjadi panjang di Java?

401

Saya mendapat pertanyaan sederhana di Jawa: Bagaimana saya bisa mengkonversi Stringyang diperoleh oleh Long.toString()ke long?

Belgi
sumber
1
5 cara dengan contoh cara mengonversi string menjadi panjang di Jawa
Somnath Muluk
1
Secara internal semua versi memanggil metode Long.parseLong (String) . Gunakan secara langsung. Simpan beberapa siklus CPU.
lokesh
Silakan lihat yang ini: developer.android.com/reference/java/lang/…
Mihir Trivedi

Jawaban:

666

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
Mike Christensen
sumber
2
bagaimana dengan "Makan Siang / Makan Malam"?
Narendra Sorathiya
kode yang bagus. kerjanya
sirmagid
140

Untuk mengonversi String menjadi Long (objek), gunakanLong.valueOf(String s).longValue();

Lihat tautan

coreyspitzer
sumber
1
Bukan itu yang diminta OP.
Christian Mann
7
@ Belgi. Tidak, ia kembalijava.lang.Long
Alexander Pogrebnyak
@ 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
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());
      }

   }
}
Genjuro
sumber
11

Long.valueOf (String s) - jelas harus berhati-hati untuk melindungi terhadap non-angka jika itu mungkin dalam kode Anda.

markdsievers
sumber
5

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 .


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 konstruktor Boolean(String). Konstruktor membuat objek baru setiap kali dipanggil, sedangkan metode pabrik statis tidak pernah diperlukan untuk melakukannya dan tidak akan dalam praktik.

Nicolas Filotto
sumber
1
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 = 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.");
   }
Hoque MD Zahidul
sumber
1

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!!!

Prajwal Shinde
sumber
0

Bagi mereka yang beralih ke Kotlin cukup gunakan
string.toLong()
Itu akan memanggil di Long.parseLong(string)bawah tenda

Leo Droidcoder
sumber
-1

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);
Chetan Nellekeri
sumber