Ter*_* Li 14 java arrays arraylist tostring
String[] array = {"a","c","b"};
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
System.out.println(array);
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)
list [a, b, c]输出是为了输出array某些地址.当我们想要输出array值时,我们可以使用Arrays.toString(array);哪个就像list.
我只是想知道为什么我们不能toString()直接调用array来获取值.这样做不是更直观和方便吗?什么导致不同的治疗Array和ArrayList?
ass*_*ias 16
数组和arraylist之间的主要区别在于arraylist是一个用Java编写的类,它有自己的实现(包括覆盖的决定toString),而数组是语言规范本身的一部分.特别是,JLS 10.7规定:
数组类型的成员是以下所有成员:
- 公共最终字段长度
- 公共方法clone,它覆盖Object类中的同名方法,并且不会抛出任何已检查的异常.
- 所有成员都继承自Object类; 唯一没有继承的Object方法是它的clone方法.
换句话说,语言规范阻止了toString数组的方法被覆盖,因此它使用定义的默认实现来Object打印类名和哈希码.
为什么做出这个决定是一个问题,应该向语言的设计者提出......