关于java集合的toString方法源码分析
2018-03-27 22:18
447 查看
在java中,大多数输出一个实例对象,就会输出它在堆空间的地址值.
但是集合输出的是字符串,以下是探究:
Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);
它的输出为:[hello, world, java]
为什么c输出的不是地址值呢?
A:Collection<String> c = new ArrayList<String>();
这是多态,所以输出c的toString()方法,其实是输出ArrayList的toString()
B:看ArrayList的toString()
而我们在ArrayList里面却没有发现toString()。这时就可以去它的父类中查看.
C:最终在它的顶层的类AbstractCollection<E>中找到了toString()的方法源码
Iterator<E> it = iterator(); //集合本身调用迭代器方法,得到集合迭代器
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next(); //e=hello,world,java
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
其实,只是重写了toString()方法而已.
但是集合输出的是字符串,以下是探究:
Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);
它的输出为:[hello, world, java]
为什么c输出的不是地址值呢?
A:Collection<String> c = new ArrayList<String>();
这是多态,所以输出c的toString()方法,其实是输出ArrayList的toString()
B:看ArrayList的toString()
而我们在ArrayList里面却没有发现toString()。这时就可以去它的父类中查看.
C:最终在它的顶层的类AbstractCollection<E>中找到了toString()的方法源码
Iterator<E> it = iterator(); //集合本身调用迭代器方法,得到集合迭代器
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next(); //e=hello,world,java
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
其实,只是重写了toString()方法而已.
相关文章推荐
- java 集合中的Collections.sort()排序方法的源码分析(一)
- 关于Java中集合类的contains方法
- java 集合框架之LinkedList及ListIterator实现源码分析
- 关于java中ReentrantLock类的源码分析以及总结与例子
- Java split方法源码分析
- 【Java学习笔记】Java中关于tostring方法的误操作
- java 集合ArrayList及LinkList源码分析
- Java集合之ArrayList源码分析
- 从源码分析java集合【LinkedList】
- 关于Java中的toString()方法
- 从源码分析java集合【ArrayList】
- Java中关于tostring方法的误操作
- Java集合之HashMap源码实现分析
- java核心之集合框架——HashMap源码分析
- java 集合ArrayList及LinkList源码分析
- 关于java的tostring()方法
- Java 集合源码分析及总结
- java关于迭代器的分析...设计更通用的容器遍历方法
- java核心之集合框架——ArrayList源码分析
- java关于迭代器的分析...设计更通用的容器遍历方法