如何在Java中将String转换为long?

时间:2011-10-07 22:07:27

标签: java string

我在Java中遇到一个简单的问题:如何将String获得的Long.toString()转换为long

8 个答案:

答案 0 :(得分:629)

使用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

答案 1 :(得分:136)

要将字符串转换为(对象),请使用Long.valueOf(String s).longValue();

请参阅link

答案 2 :(得分:27)

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

   }
}

答案 3 :(得分:11)

Long.valueOf(String s) - 显然,如果您的代码可以使用非数字,则必须小心谨慎。

答案 4 :(得分:4)

最好的方法是Long.valueOf(str),因为它依赖于Long.valueOf(long),它使用内部缓存使其更有效,因为如果需要,Long的缓存实例将从{{1}重用包含-128的内容。

  

返回表示指定long值的127实例。如果一个   新的Long实例不是必需的,这个方法一般应该是   优先使用构造函数Long,因为这个方法是   可能会产生明显更好的空间和时间表现   缓存频繁请求的值。注意,不像   在Integer类中对应的方法,不需要此方法   缓存特定范围内的值。

感谢auto-unboxing允许将包装类的实例转换为其对应的基本类型,代码将是:

Long(long)

请注意,如果提供的long val = Long.valueOf(str); 与签名的NumberFormatException不匹配,则之前的代码仍可以String

一般来说,最好使用longstaticvalueOf(str)等包装类的Integer工厂方法Boolean。 ..因为只要有可能使它们在内存占用方面比相应的Long方法或构造函数更有效,它们中的大多数都会重用实例。

Joshua Bloch撰写的Effective Java parse摘录

  

您通常可以使用 static来避免创建不必要的对象   工厂方法(第1项)优先于不可变的构造函数   提供两者的类。例如,静态工厂方法   Item 1几乎总是优先于   构造函数Boolean.valueOf(String)。构造函数创建一个新对象   每次调用它时,静态工厂方法永远不会   要求这样做,而不是在实践中。

答案 5 :(得分:0)

对于那些换到Kotlin的人,只需使用
string.toLong()
这将在引擎盖下呼叫Long.parseLong(string)

答案 6 :(得分:0)

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

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

答案 7 :(得分:-1)

如果你使用带有泛型的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);