Java autoboxing syntax

Java FAQ: Can you provide an example of the Java 5 autoboxing syntax?

Sure. The sample program that follows shows several examples of the Java 5 autoboxing (and unboxing) capability. First, I created a List of integers (Integer), but then, instead of adding Integer references, I add plain old int primitive types. Next, I get those some elements out and treat them again like Integer objects in a Java 5 for-each loop. Finally, I also show that items in the List can be treated as int primitives by doing some basic math, then printing the result value.

package com.devdaily.javasamples;

import java.util.ArrayList;
import java.util.List;

/**
 * A Java autoboxing example
 */
public class JavaAutoboxingExample {

    public static void main(String[] args) {

        List ints = new ArrayList();
    
        // (1) lets you add int values to a List
        ints.add(1);
        ints.add(2);
        ints.add(3);

        // (2) treat values coming out of the List as Integer references
        for (Integer theInt : ints) {
            // could have called any Integer method here
            System.out.println(theInt.toString());
        }
    
        // (3) treat values coming out of the List as int values
        int result = ints.get(0) + ints.get(1) + ints.get(2);
        System.out.println("result = " + result);
  
    }

}

As Sun (now Oracle) writes, the use of autoboxing and unboxing blurs the distinction between primitives and their corresponding class objects. I generally like this, but you have to keep in mind this warning from Sun on when you should use autoboxing:

"So when should you use autoboxing and unboxing? Use them only when there is an impedance mismatch between reference types and primitives, for example, when you have to put numerical values into a collection.

It is not appropriate to use autoboxing and unboxing for scientific computing, or other performance-sensitive numerical code. An Integer is not a substitute for an int; autoboxing and unboxing blur the distinction between primitive types and reference types, but they do not eliminate it."