Eu tenho uma pergunta simples em Java: como converter um String
que foi obtido por Long.toString()
para long
?
Eu tenho uma pergunta simples em Java: como converter um String
que foi obtido por Long.toString()
para long
?
Respostas:
Usar 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
Para converter uma String em um Long (objeto), useLong.valueOf(String s).longValue();
Ver link
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) - obviamente, deve-se tomar o devido cuidado para proteger contra não-números, se isso for possível no seu código.
A melhor abordagem é Long.valueOf(str)
a de Long.valueOf(long)
que usa um cache interno, tornando-o mais eficiente, pois reutilizará, se necessário, as instâncias em cache de Long
passar -128
para o 127
incluído.
Retorna uma
Long
instância que representa o valor longo especificado. Se uma nova instância Long não for necessária, esse método geralmente deve ser usado preferencialmente ao construtorLong(long)
, pois esse método provavelmente produzirá um desempenho de espaço e tempo significativamente melhor armazenando em cache os valores solicitados com freqüência. Observe que, diferentemente do método correspondente na classe Integer, esse método não é necessário para armazenar em cache valores dentro de um intervalo específico.
Graças ao auto-unboxing, que permite converter a instância de uma classe de wrapper em seu tipo primitivo correspondente, o código seria:
long val = Long.valueOf(str);
Observe que o código anterior ainda pode gerar um NumberFormatException
se o fornecido String
não corresponder a um assinado long
.
De um modo geral, é uma boa prática para usar o static
método de fábrica valueOf(str)
de uma classe de mensagens publicitárias como Integer
, Boolean
, Long
, ... pois a maioria deles reutilizar casos sempre é possível fazê-los potencialmente mais eficiente em termos de consumo de memória do que os correspondentes parse
métodos ou construtores .
Trecho do Java eficaz Item 1
escrito por Joshua Bloch :
Muitas vezes, você pode evitar a criação de objetos desnecessários usando métodos estáticos de fábrica (Item 1), em vez de construtores em classes imutáveis que fornecem os dois. Por exemplo, o método estático de fábrica
Boolean.valueOf(String)
é quase sempre preferível ao construtorBoolean(String)
. O construtor cria um novo objeto cada vez que é chamado, enquanto o método estático de fábrica nunca é necessário e, na prática, não é necessário.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
e Long number = Long.valueOf(Long.parseString("123")
todos acabam fazendo praticamente a mesma coisa. O que você não quer ser cuidadoso sobre não está chamando construtores das classes primitivas em caixa - que pode ser um desperdício. Portanto, não escrevaLong number = new Long(parseLong("123"))
Há alguma maneira de converter string para Inteiro :
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();
Podemos reduzir para:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
Ou apenas
long number = new Long("1234").longValue();
4) Usando o formato Decemal:
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.");
}
É bem simples, use
Long.valueOf(String s);
Por exemplo:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
Você Terminou!!!
Para aqueles que mudaram para Kotlin, basta usar
string.toLong()
Isso chamará Long.parseLong(string)
sob o capô
Caso você esteja usando o Mapa sem genérico, será necessário converter o valor em String e tentar converter para Long. Abaixo está o código de exemplo
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);