我在Java中提出了一个简单的问题:如何将String
获得的转换Long.toString()
为long
?
我在Java中提出了一个简单的问题:如何将String
获得的转换Long.toString()
为long
?
Answers:
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
于转换字符串到长(对象),使用Long.valueOf(String s).longValue();
见链接
java.lang.Long
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());
}
}
}
Long.valueOf(String s) -显然,如果在代码中可能的话,必须采取适当的措施以防止出现非数字。
最好的方法是Long.valueOf(str)
,它依赖于Long.valueOf(long)
使用内部缓存的缓存,因此效率更高,因为如果需要,它将重用Long
从-128
到的缓存实例127
。
返回
Long
表示指定long值的实例。如果不需要新的Long实例,则通常应优先于构造方法使用Long(long)
此方法,因为此方法通过缓存经常请求的值可能会产生明显更好的空间和时间性能。请注意,与Integer类中的相应方法不同,不需要此方法来缓存特定范围内的值。
由于自动拆箱允许将包装器类的实例转换为其相应的原始类型,因此代码如下:
long val = Long.valueOf(str);
请注意,NumberFormatException
如果提供的代码String
与带符号的不匹配,则先前的代码仍会引发long
。
一般来说,这是一个很好的做法,使用static
工厂方法valueOf(str)
的包装类等Integer
,Boolean
,Long
,...因为他们大多数情况下,重复使用,只要有可能使他们更可能在内存占用一届比相应的有效的parse
方法或构造函数。
摘自Joshua Bloch撰写的Effective Java :Item 1
您通常可以通过使用静态工厂方法(第1项)来避免创建不必要的对象,而不是使用提供两种方法的不可变类上的构造函数。例如,静态工厂方法
Boolean.valueOf(String)
几乎总是比构造方法 更可取Boolean(String)
。构造函数在每次调用时都会创建一个新对象,而静态工厂方法从来不需要这样做,实际上也不会这样做。
Long number = Long.valueOf("123")
,Long number = Long.parseLong("123")
和Long number = Long.valueOf(Long.parseString("123")
所有最终做几乎同样的事情。您要做的是小心不要调用盒装基本类的构造函数-这可能很浪费。所以不要写Long number = new Long(parseLong("123"))
有一些方法可以将字符串转换为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();
我们可以简化为:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
要不就
long number = new Long("1234").longValue();
4) 使用十进制格式:
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.");
}
很简单,使用
Long.valueOf(String s);
例如:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
你完成了!!!
如果使用的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);