ฉันได้รับคำถามง่ายๆใน Java: ฉันจะแปลงString
ที่ได้รับจากLong.toString()
เป็นlong
อย่างไร
ฉันได้รับคำถามง่ายๆใน Java: ฉันจะแปลงString
ที่ได้รับจากLong.toString()
เป็น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
ในการแปลงสตริงเป็นLong (วัตถุ) ให้ใช้Long.valueOf(String s).longValue();
ดูลิงค์
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 (String s) - เห็นได้ชัดว่าต้องใช้ความระมัดระวังเนื่องจากการป้องกันที่ไม่ใช่ตัวเลขหากเป็นไปได้ในรหัสของคุณ
วิธีที่ดีที่สุดคือLong.valueOf(str)
ขึ้นอยู่กับLong.valueOf(long)
ว่าใช้แคชภายในที่ทำให้มีประสิทธิภาพมากขึ้นเพราะจะนำมาใช้ใหม่หากจำเป็นต้องใช้อินสแตนซ์แคชที่Long
จะ-128
เข้า127
มา
ส่งคืน
Long
อินสแตนซ์ที่แสดงค่าความยาวที่ระบุ หากไม่จำเป็นต้องใช้อินสแตนซ์แบบยาวใหม่วิธีการนี้โดยทั่วไปควรใช้ในการตั้งค่าคอนสตรัคLong(long)
เตอร์เนื่องจากวิธีนี้มีแนวโน้มที่จะให้พื้นที่และประสิทธิภาพของเวลาดีขึ้นอย่างมีนัยสำคัญ โปรดทราบว่าแตกต่างจากวิธีการที่สอดคล้องกันในชั้นเรียนจำนวนเต็มวิธีนี้ไม่จำเป็นต้องแคชค่าภายในช่วงที่เฉพาะเจาะจง
ขอบคุณauto-unboxing ที่อนุญาตให้แปลงอินสแตนซ์ของคลาส wrapper เป็นประเภทดั้งเดิมที่สอดคล้องกันจากนั้นโค้ดจะเป็น:
long val = Long.valueOf(str);
โปรดทราบว่ารหัสก่อนหน้านี้ยังคงสามารถโยนNumberFormatException
ถ้ามีให้ไม่ตรงกับที่ลงนามString
long
โดยทั่วไปก็เป็นวิธีที่ดีที่จะใช้static
วิธีการที่โรงงานvalueOf(str)
ของชั้นห่อหุ้มเช่นInteger
, Boolean
, Long
... เนื่องจากส่วนใหญ่ของพวกเขานำมาใช้อินสแตนซ์เมื่อใดก็ตามที่พวกเขาทำไปได้ที่อาจเกิดขึ้นได้อย่างมีประสิทธิภาพมากขึ้นในระยะยาวของรอยความทรงจำกว่าที่สอดคล้องกันparse
วิธีการหรือการก่อสร้าง .
ข้อความที่ตัดตอนมาจากJava ที่มีประสิทธิภาพ Item 1
เขียนโดยJoshua Bloch :
คุณมักจะสามารถหลีกเลี่ยงการสร้างวัตถุที่ไม่จำเป็นโดยใช้วิธีการแบบคงที่จากโรงงาน (รายการที่ 1) ในการตั้งค่าเพื่อสร้างในชั้นเรียนที่ไม่เปลี่ยนรูปซึ่งมีทั้ง ยกตัวอย่างเช่นการโรงงานคง อยู่เกือบตลอดเวลาดีกว่าที่จะสร้าง
Boolean.valueOf(String)
Boolean(String)
ตัวสร้างสร้างวัตถุใหม่ทุกครั้งที่มีการเรียกใช้ในขณะที่วิธีการคงที่จากโรงงานไม่จำเป็นต้องทำเช่นนั้นและจะไม่ได้รับการฝึกฝน
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
และLong number = Long.valueOf(Long.parseString("123")
ทั้งหมดสิ้นสุดการทำสวยมากสิ่งเดียวกัน สิ่งที่คุณไม่ต้องการที่จะระมัดระวังเกี่ยวกับการไม่ได้เรียกร้องให้ก่อสร้างในชั้นเรียนดั้งเดิมชนิดบรรจุกล่อง - ที่สามารถจะสิ้นเปลือง ดังนั้นอย่าเขียนLong number = new Long(parseLong("123"))
มีวิธีการแปลงสตริงเป็นจำนวนเต็ม :
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();
เราสามารถร่นไปที่:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
หรือเพียงแค่
long number = new Long("1234").longValue();
4) การใช้รูปแบบ 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.");
}
มันค่อนข้างใช้งานง่าย
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);
คุณทำเสร็จแล้ว !!!
สำหรับผู้ที่เปลี่ยนมาใช้ Kotlin เพียงแค่ใช้
string.toLong()
นั่นจะโทรหาLong.parseLong(string)
ภายใต้ประทุน
ในกรณีที่คุณใช้ Map โดยไม่ต้องใช้ General คุณจะต้องแปลงค่าเป็น 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);