Встроенные (примитивные) типы данных
В языке Java, так же как и в С++, существует набор встроенных типов данных, которые (так же как и в С++) не являются объектами. Набор их также сходен с набором базовых типов С++ за некоторыми исключениями.
Numeric
Характерным отличием от С++ является то, что бинарное представление чисел отныне фиксировано:
Character
Отличаются от С++ как синтаксисом, так и представлением. Тип character есть 16-разрядное число без знака (диапазон 0-65,535). Кодировка соответствует стандарту Unicode. В силу того, что эта кодировка в идеале должна охватывать все существующие в мире языки, это представление должно облегчить локализацию приложений.
Boolean
Этот тип данных не выделен в С++, однако неявно присутствует практически во всех программах. В Java тип называется boolean, может принимать значения true и false и не может (в отличие от С++) быть преобразован в другой тип.
Операторы
Добавлен новый оператор >>> логического сдвига вправо (т.к. нет беззнаковых целых чисел). Встроенная операция слияния строк (оператор +).
Массивы
В отличие от С++ массивы в Java являются полноценными объектами с определенным runtime представлением. Декларация:
Point myPoints[];
резервирует ссылку на массив, а не место под реальный объект. Сам массив может быть затем создан выполнением
myPoints = new Point[10];
а его элементы заполнены операцией типа:
myPoints[2] = new Point();
Размер массива может быть получен во время выполнения программы:
howMany = myPoints.length;
Значение индекса проверяется при каждом обращении, при ошибке возбуждается исключительная ситуация.
Указатели полностью исключены из языка вместе с целой категорией трудноуловимых ошибок "замедленного действия". К тому же наличие указателей противоречит требованиям безопасности и усложняет реализацию сборщика мусора.