Long.valueOf (String s) fornece um Long (objeto) e Long.valueOf (String s) .longValue () fornece o long (primitivo).
Champ
27
publicclassStringToLong{publicstaticvoid main (String[] args){// String s = "fred"; // do this if you want an exceptionString s ="100";try{long l =Long.parseLong(s);System.out.println("long l = "+ l);}catch(NumberFormatException nfe){System.out.println("NumberFormatException: "+ nfe.getMessage());}}}
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 Longpassar -128para o 127incluído.
Retorna uma Longinstâ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 construtor Long(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 NumberFormatExceptionse o fornecido Stringnão corresponder a um assinado long.
De um modo geral, é uma boa prática para usar o staticmé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 parsemétodos ou construtores .
Trecho do Java eficazItem 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 construtor Boolean(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.
Vale a pena notar que o desempacotamento automático é "desapropriado" pelo compilador para, no caso de long -> Long, Long.valueOf (primitiveLong). Então 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"))
Ian Robertson
4
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 =newLong(numberAsString);long number = longObject.longValue();
Podemos reduzir para:
String numberAsString ="1234";long number =newLong(numberAsString).longValue();
Ou apenas
long number =newLong("1234").longValue();
4) Usando o formato Decemal:
String numberAsString ="1234";DecimalFormat decimalFormat =newDecimalFormat("#");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.");}
Respostas:
Usar
Long.parseLong()
fonte
Para converter uma String em um Long (objeto), use
Long.valueOf(String s).longValue();
Ver link
fonte
java.lang.Long
fonte
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.
fonte
A melhor abordagem é
Long.valueOf(str)
a deLong.valueOf(long)
que usa um cache interno, tornando-o mais eficiente, pois reutilizará, se necessário, as instâncias em cache deLong
passar-128
para o127
incluído.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:
Observe que o código anterior ainda pode gerar um
NumberFormatException
se o fornecidoString
não corresponder a um assinadolong
.De um modo geral, é uma boa prática para usar o
static
método de fábricavalueOf(str)
de uma classe de mensagens publicitárias comoInteger
,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 correspondentesparse
métodos ou construtores .Trecho do Java eficaz
Item 1
escrito por Joshua Bloch :fonte
Long number = Long.valueOf("123")
,Long number = Long.parseLong("123")
eLong 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)
2)
3)
Podemos reduzir para:
Ou apenas
4) Usando o formato Decemal:
fonte
É bem simples, use
Long.valueOf(String s);
Por exemplo:
Você Terminou!!!
fonte
Para aqueles que mudaram para Kotlin, basta usar
string.toLong()
Isso chamará
Long.parseLong(string)
sob o capôfonte
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
fonte