Ce face String.charAt
charAt(i) returnează caracterul de pe poziția i. Pozițiile (indicii) încep de la 0: în "Ana", charAt(0) este 'A', iar ultimul caracter este la length() - 1.
Rezultatul are tipul char (un singur caracter, între apostrofuri), nu String. Îl compari cu ==: s.charAt(0) == 'A'. Un char este de fapt un număr (codul Unicode), așa că c + 1 dă un int.
Pentru un indice negativ sau ≥ length(), metoda aruncă StringIndexOutOfBoundsException.
Parametri
| Parametru | Descriere |
|---|---|
index |
Poziția caracterului, de la 0 la length() - 1. |
Ce returnează
Caracterul de la poziția cerută, ca char.
Exemple
Exemplul 1: Prima și ultima literă
public class Main {
public static void main(String[] args) {
String nume = "Ștefan";
System.out.println("Prima literă: " + nume.charAt(0));
System.out.println("Ultima literă: " + nume.charAt(nume.length() - 1));
System.out.println("Inițiala este Ș? " + (nume.charAt(0) == 'Ș'));
}
}
Rezultat
Prima literă: Ș
Ultima literă: n
Inițiala este Ș? true
Exemplul 2: Numărarea vocalelor
Parcurgem șirul caracter cu caracter, cu un indice de la 0 la length() - 1.
public class Main {
public static void main(String[] args) {
String text = "Bucuresti este capitala";
int vocale = 0;
for (int i = 0; i < text.length(); i++) {
char c = Character.toLowerCase(text.charAt(i));
if ("aeiou".indexOf(c) >= 0) {
vocale++;
}
}
System.out.println("Vocale: " + vocale);
}
}
Rezultat
Vocale: 10
Exemplul 3: Indice în afara șirului
public class Main {
public static void main(String[] args) {
String cod = "RO12";
try {
System.out.println(cod.charAt(4));
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Eroare: " + e.getMessage());
}
}
}
Rezultat
Eroare: Index 4 out of bounds for length 4
Greșeli frecvente
- Folosești
charAt(s.length())pentru ultimul caracter. Ultimul indice estelength() - 1. - Compari
s.charAt(0) == "A"(cu ghilimele)."A"este unString, nu unchar: codul nu compilează. Scrie'A'. - Aduni două caractere și te aștepți la text:
s.charAt(0) + s.charAt(1)dă un număr (suma codurilor). Pune un șir în față:"" + a + b.
Comenzi înrudite
String.toCharArray: toCharArray() copiază șirul într-un array nou de char; getChars() copiază o porțiune într-un array existent.String.indexOf: Returnează poziția primei (indexOf) sau ultimei (lastIndexOf) apariții a unui text sau caracter, ori -1.String.chars: Returnează caracterele șirului ca IntStream (coduri numerice), ca să le prelucrezi cu operații de stream.