Character în Java

Clasa wrapper pentru tipul char, cu metode statice care verifică și transformă caractere (litere, cifre, spații).

Sintaxă
public final class Character implements Serializable, Comparable<Character>, Constable
static int getNumericValue(char c)

Ce face Character

Character este „ambalajul” obiect al tipului primitiv char: un char pus într-un List<Character> devine automat Character (autoboxing). Cel mai des însă folosești metodele ei statice: Character.isLetter(c), Character.isDigit(c), Character.toUpperCase(c). Toate cunosc Unicode, deci tratează corect și literele românești.

getNumericValue(c) returnează valoarea numerică a unui caracter: '7' dă 7. Literele a–z (mari sau mici) dau 10–35, ca în bazele de numerație mari. Pentru un caracter fără valoare numerică rezultatul este -1.

Un char este de fapt un număr (codul caracterului). De aceea '7' - '0' dă 7: este un truc vechi care merge doar pentru cifrele 0–9 obișnuite.

Parametri

Parametru Descriere
c Caracterul verificat.

Ce returnează

getNumericValue: un int, valoarea caracterului, sau -1 dacă nu are una (-2 pentru fracții ca ½).

Exemple

Exemplul 1: Valoarea numerică a unor caractere

public class Main {
    public static void main(String[] args) {
        char[] caractere = {'7', 'a', 'F', 'z', 'ș', '?'};
        for (char c : caractere) {
            System.out.println(c + " -> " + Character.getNumericValue(c));
        }
        System.out.println('7' - '0');
    }
}

Rezultat

7 -> 7
a -> 10
F -> 15
z -> 35
ș -> -1
? -> -1
7

Exemplul 2: Suma cifrelor dintr-un CNP

public class Main {
    public static void main(String[] args) {
        String cnp = "2950817226711";
        int suma = 0;
        for (char c : cnp.toCharArray()) {
            suma += Character.getNumericValue(c);
        }
        System.out.println("Suma cifrelor: " + suma);
    }
}

Rezultat

Suma cifrelor: 51

Exemplul 3: Character ca obiect (autoboxing)

Într-o colecție, fiecare char devine un obiect Character.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Character> initiale = new ArrayList<>();
        for (String nume : new String[] {"Ana", "Bogdan", "Corina"}) {
            initiale.add(nume.charAt(0));
        }
        System.out.println(initiale);
        Character c = initiale.get(1);
        char primitiv = c;
        System.out.println(primitiv + " are codul " + (int) primitiv);
    }
}

Rezultat

[A, B, C]
B are codul 66

Greșeli frecvente

  • Folosești getNumericValue pentru a verifica dacă un caracter este cifră: literele dau și ele valori (10–35). Pentru verificare folosește Character.isDigit.
  • Compari obiecte Character cu ==: pentru coduri peste 127 compari obiecte diferite. Folosește equals sau lucrează cu char.

Comenzi înrudite

  • Character.isLetter: Verifică dacă un caracter este literă, cifră sau oricare dintre ele, după regulile Unicode.
  • Character.toUpperCase: Transformă un singur caracter în literă mare sau în literă mică; celelalte caractere rămân la fel.
  • Character.isWhitespace: Verifică dacă un caracter este spațiu alb: spațiu, tab, rând nou sau alt separator Unicode.
  • String.charAt: Returnează caracterul (char) de la poziția dată; prima poziție este 0, ultima este length() – 1.
  • Tipuri wrapper și autoboxing: Fiecare primitiv are o clasă „înveliș” (Integer, Double, Character…); conversia automată între ele se numește autoboxing.