В чем разница между обычным объектом класса и объектом класса-оболочки в Java - PullRequest
2 голосов
/ 06 июля 2019

Обычно, когда я пытаюсь напечатать объект, используя System.out.println();

class Car {
    String color = "red";
}

class Main {
    public static void main(String[] args) {
        Car car = new Car();
        System.out.println(car);
    }
}

Вывод выглядит примерно так:

Car@677327b6

Что является его class name + '@' + hashCode. И внутренне он вызывает метод toString(). Это кажется хорошим. Но что происходит, когда я внедряю автобокс следующим образом:

class Main {
    public static void main(String[] args) {
        int i = 100;
        Integer obj = i;
        System.out.println(obj);
    }
}

Здесь вывод равен 100. Почему это не похоже на Main@hexcode? Я думал, что преобразую примитив i в объект типа Integer. Пожалуйста, поправьте меня.

1 Ответ

4 голосов
/ 06 июля 2019

Class @ hashCode - это возвращаемое по умолчанию значение Object.toString().Integer class переопределяет toString().

public String toString()

Возвращает объект String, представляющий значение Integer.Значение преобразуется в десятичное представление со знаком и возвращается в виде строки, точно так же, как если бы целочисленное значение было задано в качестве аргумента метода toString(int).

Переопределения:
toString в классе Object

Возвращает:
строковое представление значения этого объекта в базе 10.

...