Il termine più generale (agnostico della lingua) è un tipo di dati compositi .
In Java esistono diversi tipi di tipi di dati compositi, la più ovvia è una Classe ma un Enum sarebbe un altro esempio.
Un tipo in scatola è un altro termine correlato, che è una primitiva racchiusa in una classe per fornire un'interfaccia orientata agli oggetti. Esempi di questo in Java sono un int contro un Integer o un char contro un Character .
In java, int, byte and boolean are primitives, while String is not.
Un String è in realtà un tipo in scatola. Sotto il cofano è implementato come un array di caratteri come C e potresti anche usare un array di caratteri, se lo desideri. Ovviamente la maggior parte delle persone non lo fa perché non avrai nessuna delle pratiche astrazioni fornite dalla classe String .
Ecco come La classe java.lang.String è implementata in openjdk:
/** The value is used for character storage. */
private final char value[];
Come puoi vedere, non c'è niente di speciale in una stringa in Java.