如何转换字符串长在Java?

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

1054863 次浏览

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

看到链接

使用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),它使用内部缓存,这使得它更有效,因为它将在需要时重用包括从-128127Long缓存实例。

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

.缓存特定范围内的值

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

long val = Long.valueOf(str);

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

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


选自< >强有效的Java < / >强 Item 1,由约书亚·布洛赫编写:

使用static通常可以避免创建不必要的对象 factory方法 (Item 1)优先于immutable上的构造函数 提供两者的类。例如,静态工厂方法 Boolean.valueOf(String)几乎总是优于 构造函数Boolean(String)。构造函数创建一个新对象 每次它都被调用,而静态工厂方法从未被调用

.

.

.
对于那些转换到Kotlin的人,只需使用
string.toLong() < br > 将在引擎盖下调用Long.parseLong(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();
  1. 使用十进制格式:
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); < / p >

例如:

String s;
long l;


Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);

你做完了! !

首先,你需要检查String是否要转换为Long 不是空的真的很长来避免NumberFormatException。 要做到这一点,最好的方法是创建一个这样的新方法:

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