如何在Java中将字符串转换为long?

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

请参阅链接

 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-128127实例将被重用。

返回表示指定的long值的Long实例。 如果不需要新的Long实例,则通常应该优先使用此方法,而不是构造函数Long(long) ,因为通过缓存经常请求的值,此方法可能会产生显着更好的空间和时间性能。 请注意,与Integer类中的相应方法不同,此方法不需要缓存特定范围内的值。

由于自动拆箱允许将包装类的实例转换为其相应的原始types,代码将是:

 long val = Long.valueOf(str); 

请注意,如果提供的String与带符号的long不匹配,则前面的代码仍可能会引发NumberFormatException

一般来说,使用IntegerBooleanLong等包装类的static工厂方法valueOf(str)是一个很好的做法,因为大多数情况下,只要有可能使得实例更有效内存占用比相应的parse方法或构造函数。


摘自Joshua Bloch撰写的Effective Java Item 1

通常可以避免通过使用静态工厂方法 (Item 1)优先于提供两者的不可变类的构造函数来创建不必要的对象。 例如,静态工厂方法Boolean.valueOf(String)几乎总是优于构造函数Boolean(String) 。 构造函数每次调用时都会创建一个新对象,而静态工厂方法从来不需要这样做,实际上也不会这样做。

如果你使用的是generics映射,那么你需要将该值转换为字符串,然后尝试转换为长。 以下是示例代码

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

对于那些切换到Kotlin只是使用
string.toLong()
这将调用Long.parseLong(string)

有一些方法可以将字符串转换为整数

1)

 long l = Long.parseLong("200"); 

2)

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

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."); }