我在Java中得到了一个简单的问题:如何将long . tostring()获得的字符串转换为长字符串?
使用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
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());
}
}
}
如果您使用的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);
最好的方法是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)几乎总是优于 构造函数的布尔(字符串)。构造函数创建一个新对象 每次它都被调用,而静态工厂方法从未被调用 被要求这样做,但在实践中不会。
有几种方法可以将String转换为long:
1)
long l = Long.parseLong("200");
String numberAsString = "1234";
long number = Long.valueOf(numberAsString).longValue();
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();
使用十进制格式:
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.");
}
这很简单,使用 长。返回对象的值(字符串);
例如:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
你做完了! !
首先,您需要检查字符串是否要转换为长 为避免出现NumberFormatException,它不是空的,并且是真正的Long。 要做到这一点,最好的方法是创建一个像这样的新方法:
public static Long convertStringToLong(String str) {
try {
return Long.valueOf(str);
} catch (NumberFormatException e) {
return null;
}
}
推荐文章
- 在流中使用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时停止工作