在主函数中执行 lt.coursesToSelect.add("1111"); System.out.println(lt.coursesToSelect.get(4)); 可以直接得到字符串“1111”,但如果取得是一个course对象,就得到一个地址,这是为什么
See Also:
java.io.PrintStream.println()
java.io.PrintStream.println(boolean)
java.io.PrintStream.println(char)
java.io.PrintStream.println(char [])
java.io.PrintStream.println(double)
java.io.PrintStream.println(float)
java.io.PrintStream.println(int)
java.io.PrintStream.println(long)
java.io.PrintStream.println(java.lang.Object)
java.io.PrintStream.println(java.lang.String)
上面是println的所有方法,对于你传递的Course对象,println只能认知为Object,然后我们来看
void java.io.PrintStream.println(Object x) 方法:
Prints an Object and then terminate the line. This method calls at first String.valueOf(x) to get the printed object's string value, then behaves as though it invokes print(String) and then println().
Parameters:
x The Object to be printed.
从上面可知,方法会首先调用一个String.valueOf(x)的方法讲其变成一个字符串然后再输出,x是你传递进去的值.
所以你再自己去看String.valueOf(x)方法的内容吧
什么样的地址可以发出来看看么?大概是因为System.out.println输出的是String类型,如果是course对象,输出的就是它的内存地址