[英]How to convert String to long in Java?
我在 Java 遇到了一個簡單的問題:如何將Long.toString()
獲得的String
轉換為long
?
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)
,它使用內部緩存使其更高效,因為它會在需要時重用從-128
到127
的Long
緩存實例。
返回表示指定 long 值的
Long
實例。 如果不需要新的 Long 實例,則通常應優先使用此方法而不是構造函數Long(long)
,因為此方法通過緩存頻繁請求的值可能會產生明顯更好的空間和時間性能。 請注意,與 Integer 類中的相應方法不同,此方法不需要緩存特定范圍內的值。
由於自動拆箱允許將包裝類的實例轉換為其相應的原始類型,代碼將是:
long val = Long.valueOf(str);
請注意,如果提供的String
與有符號的long
不匹配,則前面的代碼仍然會拋出NumberFormatException
。
一般來說,使用包裝類(如Integer
、 Boolean
、 Long
等valueOf(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();
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.