String.charAt în Java

Returnează caracterul (char) de la poziția dată; prima poziție este 0, ultima este length() - 1.

Sintaxă
char charAt(int index)

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 este length() - 1.
  • Compari s.charAt(0) == "A" (cu ghilimele). "A" este un String, nu un char: 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.