Jak przekonwertować / rzutować długo na ciąg?


290

Właśnie stworzyłem przykładową aplikację BB, która pozwala wybrać datę.

DateField curDateFld = new DateField("Choose Date: ",
  System.currentTimeMillis(), DateField.DATE | DateField.FIELD_LEFT);

Po wybraniu daty muszę przekonwertować tę długą wartość na String, aby móc łatwo przechowywać wartość daty w bazie danych. Jestem nowy w rozwoju Java i Blackberry.

long date = curDateFld.getDate();

Jak przekonwertować tę długą wartość na String? Również chcę przekonwertować z powrotem na Long z String. Myślę, że do tego mogę użyć long l = Long.parseLong("myStr");?

Odpowiedzi:


393

Zobacz dokumentację referencyjną dla klasy String :String s = String.valueOf(date);

Jeśli Twój Długi może być zerowy i nie chcesz otrzymywać 4-literowego "null"ciągu, możesz użyć Objects.toString, np .:String s = Objects.toString(date, null);


EDYTOWAĆ:

Odwracasz go za pomocą, Long l = Long.valueOf(s);ale w tym kierunku musisz złapaćNumberFormatException


13
Zauważ, że Long.valueOf(String)zwraca a Long. Jeśli chcesz long, użyj Long.parseLong(String).
Daniel Hepper

1
Czym różni się ten sposób, czy po prostu konkatować tak: („” + longAttr)?
Marcelo Assis

4
@MarceloAssis .. concat jest około 2x wolniejszy. Jeśli wydajność ma znaczenie w twojej aplikacji.
Hari Menon,

Fajnie, ale pamiętaj, że java.util.Objectsjest dostępna tylko od wersji Java 7.
Guillaume Husta,

1
Przed wersją Java 7 można było również używać Commons Lang, ObjectUtils.toString(Object,String)która jest równoważna. -> commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/… , java.lang.String)
Guillaume Husta

207
String strLong = Long.toString(longNumber);

Prosty i działa dobrze :-)


Dla ogólnej konwersji typu poza Datekontekście jest to zalecana praktyka konwertować Longdo String.
KomodoDave,

3
Działa dobrze z typem pierwotnym (długim), ale może generować NPE z typem obiektu (długi), nawet przy autoboxowaniu.
Guillaume Husta

93

Long.toString()

Następujące powinny działać:

long myLong = 1234567890123L;
String myString = Long.toString(myLong);

1
Czy jest jakaś różnica String.valueOf(myLong)?
Membersound

2
@membersound są takie same. Zasadniczo String.valueOf (long) wywołuje Long.toString ()
Nero

3
@Nero Nie wywołałbym tego samego, ponieważ String.valueOf () zwróci „null” w przypadku wartości null, podczas gdy Long.toString () spowoduje NullPointerException
Dhiresh Jain 27.04.19

21

bardzo proste, po prostu połącz długi do łańcucha.

long date = curDateFld.getDate(); 
String str = ""+date;

10

1.

long date = curDateFld.getDate();
//convert long to string
String str = String.valueOf(date);

//convert string to long
date = Long.valueOf(str);

2)

 //convert long to string just concat long with empty string
 String str = ""+date;
//convert string to long

date = Long.valueOf(str);

3
String logStringVal= date+"";

Może przekształcić długi w ciąg znaków, fajny skrót do konwersji na ciąg ... ale użycie String.valueOf(date);jest zalecane


Myślałem, że String.valueOfto preferowane podejście, ale zauważyłem, że to tylko połączenia, Long.toStringwięc może to jest prostszy sposób.
gMale

2
String longString = new String(""+long);

lub

String longString = new Long(datelong).toString();

Dobrą praktyką w przypadku przepełnienia stosu jest wyjaśnienie, dlaczego Twoje rozwiązanie powinno działać. Aby uzyskać więcej informacji, przeczytaj Jak odpowiedzieć .
Fabian Schultz

1
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienia, zostaw komentarz pod postem. - Z recenzji
Krupal Shah

2
@KrupalShah Odpowiedź tylko na kod może nie być dobra, ale nadal jest odpowiedzią. Poleciłbym ci ten post o LQPRQ: Robisz to źle: prośba o zdrowie psychiczne w kolejce postów niskiej jakości
FelixSFD
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.