Может ли объект в Java состоять только из полей примитивных типов?

«Может ли объект в Java состоять только из полей примитивных типов?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, может. Класс в Java может содержать поля только примитивных типов (int, double, boolean, char и т.д.). При создании экземпляра такого класса, значения примитивов хранятся непосредственно в памяти, занимаемой объектом.

Пример класса:

public class SensorData {
    private int sensorId;
    private double value;
    private long timestamp;
    private boolean isActive;

    public SensorData(int sensorId, double value, long timestamp, boolean isActive) {
        this.sensorId = sensorId;
        this.value = value;
        this.timestamp = timestamp;
        this.isActive = isActive;
    }
    // Геттеры, сеттеры...
}

Создание объекта:

SensorData data = new SensorData(101, 36.6, System.currentTimeMillis(), true);
// Объект 'data' состоит исключительно из примитивных значений.

Ключевые отличия от ссылочных типов:

  • Хранение: Примитивы хранятся в стеке (для локальных переменных) или внутри объекта в куче. Ссылочные типы хранят в объекте только адрес (ссылку) на данные в куче.
  • Значение по умолчанию: Поля-примитивы в классе инициализируются значениями по умолчанию (например, 0, false), а ссылочные — null.