Quando un oggetto si trova in un 'contesto' in cui è richiesta una stringa, come nel caso di

System.out.print(temp.intValue());

viene invocato il metodo toString() che è definito nella classe Object, ed è quindi ereditto da tutti gli oggetti, che restituisce una stringa che rappresenta l'oggetto stesso. La classe Integer ridefinisce il metodo toString() in modo da restituire una stringa che rappresenta il valore intero che quell'Integer racchiude.