Java está realmente passando objetos por valor? [duplicado

Possible Duplicate: O Java passa por referência?

public class myClass{
    public static void main(String[] args){
        myObject obj = new myObject("myName");
        changeName(obj);
        System.out.print(obj.getName()); // This prints "anotherName"
    }
    public static void changeName(myObject obj){
        obj.setName("anotherName");
    }
}

Eu sei que o Java passa por valor, mas por que ele passaobj por referência no exemplo anterior e alterá-lo?

questionAnswers(6)

yourAnswerToTheQuestion