java各种toString方法

本文详细解析了Java中Object类的toString()方法及其在数组、String类型、集合类如List、Set和Map上的应用。同时,介绍了数组类无法被override的toString()方法特性,以及String类型直接返回自身的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. java的根类: Object
    /* getClass().getName() + '@' + Integer.toHexString(hashCode())
         * </pre></blockquote>
         *
         * @return  a string representation of the object.
         */
        public String toString() {
    	return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
     所以我们见到的没有override toString()方法的都会调用Object的toString()方法。
  2. 数组:
    		/**
    		 * [I@119298d
    		 */
    		int[] a = {1,2,3};
    		System.out.println(a.toString());
    		/**
    		 * [[I@119298d
    		 */
    		int[][] b = {{1},{2},{3}};
    		System.out.println(b.toString()); 
    
     无法override 数组类的toString()方法,它是由虚拟机在第一次遇到时生成的数组数据类型.
  3. String类型
        /**
         * This object (which is already a string!) is itself returned.
         *
         * @return  the string itself.
         */
        public String toString() {
    	return this;
        }
  4. Set和List
    		/**
    		 * [1, 1, 1, 1]
    		 * [1]
    		 */
    		List list = new ArrayList(Collections.nCopies(4, 1));
    		System.out.println(list.toString());
    		Set set = new TreeSet(Collections.nCopies(4, 1));
    		System.out.println(set.toString());
     这个是由抽象类AbstractCollection实现的toString()方法:
        public String toString() {
            Iterator<E> i = iterator();
    	if (! i.hasNext())
    	    return "[]";
    
    	StringBuilder sb = new StringBuilder();
    	sb.append('[');
    	for (;;) {
    	    E e = i.next();
    	    sb.append(e == this ? "(this Collection)" : e);
    	    if (! i.hasNext())
    		return sb.append(']').toString();
    	    sb.append(", ");
    	}
        }
     
  5. Map
    		/**
    		 * {}
    		 */
    		Map map = new HashMap();
    		System.out.println(map.toString());
     这个是由抽象类AbstractMap实现的toString()方法:
        public String toString() {
    	Iterator<Entry<K,V>> i = entrySet().iterator();
    	if (! i.hasNext())
    	    return "{}";
    
    	StringBuilder sb = new StringBuilder();
    	sb.append('{');
    	for (;;) {
    	    Entry<K,V> e = i.next();
    	    K key = e.getKey();
    	    V value = e.getValue();
    	    sb.append(key   == this ? "(this Map)" : key);
    	    sb.append('=');
    	    sb.append(value == this ? "(this Map)" : value);
    	    if (! i.hasNext())
    		return sb.append('}').toString();
    	    sb.append(", ");
    	}
        }
     应该还有比较特殊的,以后慢慢补充,现在只想到这些。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值