我在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
要将一个字符串转换成一个 长整型(对象),使用 Long.valueOf(String s).longValue();
请参阅 链接
java.lang.Long
。 - Alexander Pogrebnyakpublic 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());
}
}
}
有几种方法可以将字符串转换为长整型:
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(str)
,因为它依赖于Long.valueOf(long)
,后者使用内部缓存使其更有效率,因为它将重用从-128
到127
(包括这两个数)的Long
实例。
感谢自动拆箱,它允许将包装类的实例转换为其相应的基本类型,代码将会是这样:返回表示指定长整型值的
Long
实例。如果不需要新的Long
实例,通常应该优先使用此方法而不是构造函数Long(long)
,因为此方法通过缓存频繁请求的值可能会显著提高空间和时间性能。请注意,与Integer类中相应的方法不同,此方法不需要在特定范围内缓存值。
long val = Long.valueOf(str);
摘自Effective Java的第一条
,作者为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"))
。 - Ian Robertson这很简单,使用 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的字符串不是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 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);