首页 文章

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

提问于
浏览
346

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

8 回答

  • 133

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

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

    由于auto-unboxing允许将包装类的实例转换为其对应的基本类型,因此代码将为:

    long val = Long.valueOf(str);
    

    请注意,如果提供的 String 与签名的 long 不匹配,则前面的代码仍然可以抛出 NumberFormatException .

    一般来说,使用 IntegerBooleanLong 等封装类的 static 工厂方法 valueOf(str) 是一个好习惯,因为大多数情况下,只要有可能使它们在内存占用方面更有效,它们就会重用实例 . 相应的 parse 方法或构造函数 .


    摘自Effective Java Item 1Joshua Bloch 撰写:

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

  • -1

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

    link

  • 2

    There are some way to convert string to 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();
    

    We can shorten to:

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

    Or Just

    long number = new Long("1234").longValue();
    

    4) Using Decemal format :

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

    Long.valueOf(String s) - 显然,如果您的代码可以使用,则必须注意防范非数字 .

  • 0

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

    对于那些切换到Kotlin只是使用
    string.toLong()
    这将在引擎盖下召唤 Long.parseLong(string)

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

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

相关问题