簡體   English   中英

如何將Java中的String轉成long?

[英]How to convert String to long in Java?

我在 Java 遇到了一個簡單的問題:如何將Long.toString()獲得的String轉換為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

要將String轉換為Long (對象),請使用Long.valueOf(String s).longValue();

鏈接

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) ,它使用內部緩存使其更高效,因為它會在需要時重用從-128127Long緩存實例。

返回表示指定 long 值的Long實例。 如果不需要新的 Long 實例,則通常應優先使用此方法而不是構造函數Long(long) ,因為此方法通過緩存頻繁請求的值可能會產生明顯更好的空間和時間性能。 請注意,與 Integer 類中的相應方法不同,此方法不需要緩存特定范圍內的值。

由於自動拆箱允許將包裝類的實例轉換為其相應的原始類型,代碼將是:

long val = Long.valueOf(str);

請注意,如果提供的String與有符號的long不匹配,則前面的代碼仍然會拋出NumberFormatException

一般來說,使用包裝類(如IntegerBooleanLongvalueOf(str)static工廠方法valueOf(str)是一個很好的做法,因為它們中的大多數只要有可能就重用實例,從而使它們在以下方面可能更高效內存占用比相應的parse方法或構造函數少。


摘自Joshua Bloch編寫的Effective Java Item 1

您通常可以通過使用靜態工廠方法(第 1 項)而不是在提供兩者的不可變類上的構造函數來避免創建不必要的對象。 例如,靜態工廠方法Boolean.valueOf(String)幾乎總是比構造函數Boolean(String)更可取。 每次調用構造函數時都會創建一個新對象,而靜態工廠方法從不需要這樣做,在實踐中也不會這樣做。

有幾種方法可以將String轉換為long

1)

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();

我們可以縮短為:

String numberAsString = "1234";
long number = new Long(numberAsString).longValue();

要不就

long number = new Long("1234").longValue();
  1. 使用十進制格式:
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.");
}

很簡單,使用Long.valueOf(String s);

例如:

String s;
long l;

Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);

你完成了!!!

首先,您需要檢查要轉換為 Long 的 String是否不是 null並且真的是 Long以避免NumberFormatException 要做到這一點,最好的方法是創建一個像這樣的新方法:

    public static Long convertStringToLong(String str) {
        try {
            return Long.valueOf(str);
        } catch (NumberFormatException e) {
            return null;
        }
    }

對於那些切換到 Kotlin 的人,只需使用
string.toLong()
這將在引擎蓋下調用Long.parseLong(string)

如果您使用的是沒有泛型的 Map,那么您需要將該值轉換為 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM