zoukankan      html  css  js  c++  java
  • 《java入门第一季》之集合toString源码解析

    代码:
    	Collection c = new ArrayList();
    	c.add("hello");
    	c.add("world");
    	c.add("java");
    	
    	System.out.println(c);

    打印输出:[hello world java]

    问题:为什么c输出的不是地址值呢?

    A:Collection c = new ArrayList();
    这是多态,所以输出c的toString()方法,其实是输出ArrayList的toString()
    B:看ArrayList的toString()
    而我们在ArrayList里面却没有发现toString()。
    遇到这种情况,也不要担心,你认为有,它却没有,就应该去它父亲里面看看。
    C:toString()的方法源码

    public String 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())
    	            	//[hello, world, java]
    	                return sb.append(']').toString();
    	            sb.append(',').append(' ');
    	        }
    	    }

    可见集合toString源码还是很简单的。

  • 相关阅读:
    【hibernate】常用注解
    【Maven】常用命令
    【Eclipse】安装配置
    【Eclipse】Spring Tool Suite插件
    【Git】远程分支
    【Git】本地分支
    日地拉格朗日L2点轨道的卫星运行
    SDK Manager的使用
    Appium Python API
    输入的中文,屏蔽软键盘
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299725.html
Copyright © 2011-2022 走看看