will this change reflect in the ArrayList?
Yes, since you added a reference to the object in the list. The reference you added will still point to the same object, (which you modified).
or when I add the object to the ArrayList, Java creates a copy and add it to the ArrayList?
No, it won't copy the object. (It will copy the reference to the object.)
What if I change the reference to this object to null? Does that mean that the object in the ArrayList now null too?
No, since the content of the original reference was copied when added to the list. (Keep in mind that it is the reference that is copied, not the object.)
Demonstration:
StringBuffer sb = new StringBuffer("foo");
List<StringBuffer> list = new ArrayList<StringBuffer>();
list.add(sb);
System.out.println(list); // prints [foo]
sb.append("bar");
System.out.println(list); // prints [foobar]
sb = null;
System.out.println(list); // still prints [foobar]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…