Java打印charArray.toString() 后续补充如何重写

把char 数组中的内容打印出来:

Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法

public class Test
{
    public static void main(String[] args)
    {
        char[] someArray = { 'J', 'A', 'V', 'A' };
        System.out.println(someArray.toString());
    }
}

 结果并不如预想那样,打印出JAVA,结果是”[C@24c21495″。
看toString的源码:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

函数返回一个字符串,这其中包含::类名+@+哈希值的16进制形式

  • toHexString(int i)方法:

以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式

返回对象的字符串形式的地址值。对我们来说没有任何意义;所以通常情况,我们都会重写该方法

或者用:

1)  System.out.println(new String(someArray));

2)  System.out.println(String.valueOf(someArray));都可以

因为 String.valueOf()的源码为:

public static String valueOf(char data[]) {
    return new String(data);
}

代码示例: 

import java.util.Arrays;
public class demo {
    public static void main(String[] args) {
        int [] arr={3,4,5,6,7};
       System.out.println(Arrays.toString(arr)) ;

    }
}

Arrays.toString()的源码为:分析可知,对toString()进行了重写,生成字符串[3,4,5,6,7]

注意:可以看源码,转化的字符串由”[", "a[i]",", "以及']' 组成。

public static String toString(int[] a) {
    if (a == null)
        return "null";
    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(a[i]);
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}

参考:https://blog.csdn.net/zhuyu_deng/article/details/8723762 

猜你喜欢

转载自blog.csdn.net/nsjlive/article/details/89525940
今日推荐