Tôi có một câu hỏi đơn giản trong Java: Làm thế nào tôi có thể chuyển đổi một String
mà đã thu được bằng cách Long.toString()
để long
?
Tôi có một câu hỏi đơn giản trong Java: Làm thế nào tôi có thể chuyển đổi một String
mà đã thu được bằng cách Long.toString()
để long
?
Câu trả lời:
Sử dụng 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
Để chuyển đổi Chuỗi thành Dài (đối tượng), hãy sử dụngLong.valueOf(String s).longValue();
Xem liên kết
java.lang.Long
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 (Chuỗi s) - rõ ràng phải được chăm sóc cẩn thận để bảo vệ chống lại các số không nếu có thể trong mã của bạn.
Cách tiếp cận tốt nhất là Long.valueOf(str)
vì nó dựa vào Long.valueOf(long)
đó sử dụng một bộ nhớ cache nội bộ làm cho nó hiệu quả hơn vì nó sẽ tái sử dụng nếu cần thiết các trường hợp lưu trữ của Long
đi từ -128
để 127
đưa vào.
Trả về một
Long
thể hiện đại diện cho giá trị dài được chỉ định. Nếu không cần một phiên bản Long mới, phương thức này thường được sử dụng theo sở thích của nhà xây dựngLong(long)
, vì phương pháp này có khả năng mang lại hiệu suất không gian và thời gian tốt hơn đáng kể bằng cách lưu trữ các giá trị được yêu cầu thường xuyên. Lưu ý rằng không giống như phương thức tương ứng trong lớp Integer, phương thức này không bắt buộc để lưu các giá trị trong một phạm vi cụ thể.
Nhờ tự động hủy hộp cho phép chuyển đổi thể hiện của lớp bao bọc thành kiểu nguyên thủy tương ứng của nó, mã sau đó sẽ là:
long val = Long.valueOf(str);
Xin lưu ý rằng mã trước đó vẫn có thể ném NumberFormatException
nếu mã được cung cấp String
không khớp với chữ ký long
.
Nói chung, đó là một thực hành tốt để sử dụng các static
phương pháp nhà máy valueOf(str)
của một lớp wrapper như Integer
, Boolean
, Long
, ... vì hầu hết trong số họ tái sử dụng các trường hợp bất cứ khi nào có thể làm cho họ có khả năng hiệu quả hơn trong nhiệm kỳ của bộ nhớ hơn tương ứng với parse
các phương pháp hoặc các hàm .
Trích từ Java hiệu quả Item 1
được viết bởi Joshua Bloch :
Bạn thường có thể tránh việc tạo các đối tượng không cần thiết bằng cách sử dụng các phương thức tĩnh của nhà máy (Mục 1) để ưu tiên cho các nhà xây dựng trên các lớp bất biến cung cấp cả hai. Ví dụ, phương thức nhà máy tĩnh
Boolean.valueOf(String)
hầu như luôn luôn thích hợp hơn với hàm tạoBoolean(String)
. Hàm tạo tạo một đối tượng mới mỗi lần nó được gọi, trong khi phương thức tĩnh nhà máy không bao giờ bắt buộc phải làm như vậy và sẽ không thực tế.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
và Long number = Long.valueOf(Long.parseString("123")
tất cả cuối cùng làm khá nhiều điều tương tự. Những gì bạn làm muốn cẩn thận về việc không được gọi constructor của lớp nguyên thủy đóng hộp - đó có thể là lãng phí. Vì vậy, đừng viếtLong number = new Long(parseLong("123"))
Có một số cách để chuyển đổi chuỗi thành 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();
Chúng ta có thể rút ngắn thành:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
Hoặc chỉ
long number = new Long("1234").longValue();
4) Sử dụng định dạng 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.");
}
Nó khá đơn giản, sử dụng
Long.valueOf(String s);
Ví dụ:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
Bạn đã hoàn tất!!!
Đối với những người chuyển sang Kotlin chỉ cần sử dụng
string.toLong()
Điều đó sẽ gọi Long.parseLong(string)
dưới mui xe
Trong trường hợp bạn đang sử dụng Bản đồ không có chung chung, thì bạn cần chuyển đổi giá trị thành Chuỗi và sau đó thử chuyển đổi thành Dài. Dưới đây là mã mẫu
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);