我在Java中得到了一个简单的问题:如何将long . tostring()获得的字符串转换为长字符串?


当前回答

首先,您需要检查字符串是否要转换为长 为避免出现NumberFormatException,它不是空的,并且是真正的Long。 要做到这一点,最好的方法是创建一个像这样的新方法:

    public static Long convertStringToLong(String str) {
        try {
            return Long.valueOf(str);
        } catch (NumberFormatException e) {
            return null;
        }
    }

其他回答

最好的方法是long . valueof (str),因为它依赖于long . valueof (long),它使用内部缓存,使其更有效,因为它将在需要时重用缓存的long实例,包括从-128到127。

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

由于自动开箱允许将包装器类的实例转换为相应的基元类型,代码将是:

long val = Long.valueOf(str);

请注意,如果提供的String与带符号的long不匹配,前面的代码仍然可以抛出NumberFormatException。

一般来说,使用包装器类的静态工厂方法valueOf(str)是一个很好的实践,例如Integer, Boolean, Long,…因为它们中的大多数在可能的情况下重用实例,这使得它们在内存占用方面比相应的解析方法或构造函数更有效。


摘自《Effective Java Item 1》,作者Joshua Bloch:

通过使用静态,通常可以避免创建不必要的对象 factory方法(第1项)优先于immutable上的构造函数 提供两者的类。例如,静态工厂方法 Boolean.valueOf(String)几乎总是优于 构造函数的布尔(字符串)。构造函数创建一个新对象 每次它都被调用,而静态工厂方法从未被调用 被要求这样做,但在实践中不会。

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

首先,您需要检查字符串是否要转换为长 为避免出现NumberFormatException,它不是空的,并且是真正的Long。 要做到这一点,最好的方法是创建一个像这样的新方法:

    public static Long convertStringToLong(String str) {
        try {
            return Long.valueOf(str);
        } catch (NumberFormatException e) {
            return null;
        }
    }

如果您使用的Map没有泛型,那么您需要将值转换为字符串,然后尝试转换为长。下面是示例代码

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

要将String转换为Long(对象),请使用Long。返回对象的值(字符串).longValue ();

看到链接