我在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 ();
看到链接
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- Printf与std::字符串?
- 在Jar文件中运行类
- 带参数的可运行?
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- 如何在PHP中截断字符串最接近于一定数量的字符?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作