首先 c 和 a1 只是引用(c++ 中可以理解为指针)不同,但是都指向同一个堆中的对象(因为你只是简单的引用赋值)。这个 ArrayList 中的第一个对象"String",就是个 String 类型。 具体可以 google 下 "java 运行时类型 和 编译时类型"