Ce face Long.parseLong
long ține numere întregi pe 64 de biți, până la aproximativ 9,2 miliarde de miliarde (Long.MAX_VALUE = 9223372036854775807). Îl folosești pentru sume mari, populații, milisecunde sau numere de telefon tratate ca numere. Clasa Long este varianta obiect, folosită în colecții.
Long.parseLong(s) citește un text și returnează un long; Long.valueOf(s) returnează un obiect Long. Regulile sunt aceleași ca la Integer.parseInt: fără spații, fără zecimale, iar textul invalid aruncă NumberFormatException. Textul nu poate avea sufixul L folosit în cod.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul cu numărul. |
baza |
Baza de numerație (2–36), implicit 10. |
l |
Pentru valueOf(long): valoarea de împachetat. |
Ce returnează
parseLong: un long. valueOf: un Long.
Exemple
Exemplul 1: Numere prea mari pentru int
public class Main {
public static void main(String[] args) {
String populatie = "19050000";
String bugetLei = "584300000000";
long p = Long.parseLong(populatie);
long b = Long.parseLong(bugetLei);
System.out.println("Buget pe locuitor: " + b / p + " lei");
try {
Integer.parseInt(bugetLei);
} catch (NumberFormatException e) {
System.out.println("Nu încape în int: " + e.getMessage());
}
System.out.println(Long.MAX_VALUE);
}
}
Rezultat
Buget pe locuitor: 30671 lei
Nu încape în int: For input string: "584300000000"
9223372036854775807
Exemplul 2: valueOf și un literal long
În cod, un număr long mare se scrie cu sufixul L; în text, sufixul nu este acceptat.
import java.util.List;
public class Main {
public static void main(String[] args) {
Long a = Long.valueOf("3000000000");
long b = 3_000_000_000L;
System.out.println(a.equals(b));
List<Long> sume = List.of(a, b, Long.valueOf(250L));
long total = 0;
for (long s : sume) {
total += s;
}
System.out.println("Total: " + total);
try {
Long.parseLong("100L");
} catch (NumberFormatException e) {
System.out.println("Invalid: " + e.getMessage());
}
}
}
Rezultat
true
Total: 6000000250
Invalid: For input string: "100L"
Greșeli frecvente
- Scrii
long x = 3000000000;fărăL: compilatorul spune că numărul este prea mare pentruint. Scrie3000000000L. - Calculezi
int * intși pui rezultatul într-unlong: înmulțirea se face tot înintși dă overflow înainte de atribuire. Fă unul dintre operanzilong. - Compari două
Longcu==; foloseșteequals.
Comenzi înrudite
Integer.parseInt: Transformă un text ca „42” în numărul întreg 42; valueOf face același lucru, dar returnează un obiect Integer.Double.parseDouble: Double este wrapperul pentru double; parseDouble și valueOf transformă un text ca „3.75” în număr cu zecimale.Integer: Clasa wrapper pentru int: obiectul care învelește un număr întreg, plus constante și metode de conversie.Math.multiplyFull: multiplyFull înmulțește două int-uri cu rezultat long complet; multiplyHigh dă jumătatea de sus a produsului a două long-uri.