String Methods
Am văzut deja cum să declarăm un String și cum să combinăm string-uri cu +. E timpul să ne uităm la cele mai utile metode pentru String din Java
Cât de lung este un string? .length()
public class Main {
public static void main(String[] args) {
String nume = "Tommy Vercetti";
System.out.println(nume.length());
}
}
Output 14. Spațiile contează și ele. Observă parantezele () de la final: pentru String, length este o metodă, așa că o apelăm cu paranteze
Litere mari și litere mici
public class Main {
public static void main(String[] args) {
String nume = "tommy vercetti";
System.out.println(nume.toUpperCase()); // TOMMY VERCETTI
System.out.println(nume.toLowerCase()); // tommy vercetti
}
}
Important: aceste metode nu schimbă variabila originală. Ele dau înapoi un string nou
public class Main {
public static void main(String[] args) {
String nume = "tommy";
nume.toUpperCase();
System.out.println(nume); // tot tommy
}
}
Ca să păstrăm efectiv versiunea cu majuscule, trebuie să reasignăm
public class Main {
public static void main(String[] args) {
String nume = "tommy";
nume = nume.toUpperCase();
System.out.println(nume); // TOMMY
}
}
Această capcană prinde pe toată lumea la început. String-urile în Java sunt imutabile: nu pot fi schimbate. Metodele întorc întotdeauna un string nou
Obține un substring (o bucată din string)
public class Main {
public static void main(String[] args) {
String nume = "Tommy Vercetti";
System.out.println(nume.substring(0, 5)); // Tommy
System.out.println(nume.substring(6)); // Vercetti
}
}
substring(start, end) dă caracterele de la poziția start până la (dar fără a include) poziția end, capătul este exclusiv
substring(start) cu un singur argument dă tot de la start până la finalul string-ului
Numărarea începe de la 0. nume.substring(0, 5) înseamnă pozițiile 0, 1, 2, 3, 4 care formează Tommy
Un singur caracter de la o poziție
public class Main {
public static void main(String[] args) {
String nume = "Tommy Vercetti";
System.out.println(nume.charAt(0)); // T
System.out.println(nume.charAt(6)); // V
}
}
charAt(i) dă înapoi un char (un singur caracter). Combinat cu length(), poți lua și ultimul caracter: nume.charAt(nume.length() - 1)
Compararea string-urilor, și cea mai des întâlnită capcană din Java din toate timpurile
public class Main {
public static void main(String[] args) {
String a = "salut";
String b = "salut";
if (a == b) {
System.out.println("egal");
} else {
System.out.println("nu e egal");
}
}
}
Asta ar putea afișa egal, dar e greșit. Cu obiectele (și String este un obiect în Java), == compară dacă sunt același obiect din memorie, nu dacă au același conținut. Modul corect este
public class Main {
public static void main(String[] args) {
String a = "salut";
String b = "salut";
if (a.equals(b)) {
System.out.println("egal");
}
}
}
Folosește întotdeauna .equals() ca să compari string-uri în Java. Memorează asta de pe acum
Misiune: Decodorul de Semnal
Un nume a sosit bruiat prin stația de comunicații a lui Tommy. Modulul de decriptare are nevoie să-l afișezi în mai multe formate, ca analiștii să-l poată verifica.
Stochează numele într-un String numit nume. Apoi afișează aceste șase valori pe linii separate, în această ordine:
- numele cu majuscule
- numele cu minuscule
- lungimea numelui
- primul caracter
- primele 5 caractere
- ultimele 5 caractere
Pentru „ultimele 5 caractere" folosește length() ca să calculezi poziția de start, ca să meargă pentru orice nume (de cel puțin 5 litere).
Exemplu pentru numele lance vance:
LANCE VANCE
lance vance
11
l
lance
vance
Exemplu pentru numele tommy vercetti:
TOMMY VERCETTI
tommy vercetti
14
t
tommy
cetti
Exemplu pentru numele lance (exact 5 litere: primele 5 și ultimele 5 sunt tot numele):
LANCE
lance
5
l
lance
lance