# 代码:

```java
public static String deepToString(Object[] a) {
    if (a == null)
        return "null";
    int bufLen = 20 * a.length;
    if (a.length != 0 && bufLen <= 0)
        bufLen = Integer.MAX_VALUE;
    StringBuilder buf = new StringBuilder(bufLen);
    deepToString(a, buf, new HashSet<>());
    return buf.toString();
}
```

1.toString()方法

  1. toString()方法在Object类里定义的,其返回值类型为String类型,返回类名和它的引用地址
  2. 在进行String类与其他类型的连接操作时,自动调用toString()方法,demo如下:

    Date now = new Date();
    System.out.println("now = " + now);//相当于下一行代码
    System.out.println("now = " + now.toString());
    1
    2
    3
  3. 实际应用中,可以根据需要在用户自定义类型中重写toString()方法,如Stirng类重写了toString()方法,返回字符串的值,dome如下

    System.out.println(s1);//相当于下一行代码
    System.out.println(s1.toString());
    1
    2
  4. 基本数据类型转换为String类型是,调用了对应包装类的toString()方法,demo如下:

    int a = 10;
    System.out.println("a = " + a);
    System.out.println("a = "+a.toString())
    1
    2

2. 通过java.lang.Object类的toString()定义来看实际使用中会出现什么情况?

  1. 这是jdk里面的源码

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

2.在实际使用会出现什么情况

Person p1 = new Person();
System.out.println(p1.toString());//TestEquals.Person@15db9742
System.out.println(p1);//TestEquals.Person@15db9742 因为输出的时候回默认调用Objec类toString()方法
1
2
3
  1. 当我们打印一个对象的引用时,实际是默认调用这个对象的toString()方法
  2. 当打印的对象所在类没有重写Object中的toString()方法时,默认调用的是Object类中toString()方法。
  3. 返回此对象所在的类及对应的堆空间对象实体的首地址值
  4. 当我们打印对象所 在类重写了toString(),调用的就是已经重写了的toString()方法,一般重写是将类对象的属性信息返回。

    //手动实现
    public String toString(){
    return " Person:name=" + name +" age=" + age;
    }
    1
    2
    3
    4
  5. toString()快速自动调用,重写
    第一步
    图片
    第二步
    图片
    第三步
    图片

    String[] str = f3.list();
    System.out.println(str);
    System.out.println(str.toString());
    System.out.println(Arrays.toString(str));

图片

可以看到的是str和str.toString()两个都是打印了地址,在输出的时候默认就调用了toString()函数,打印出元素的首地址,但是如果通过一个Array.toString(str)的方法调用,就可以将这个数组用字符串的方式格式化输出,如果需要将数组打印出来,一定要调用Arrays.toString()方法。这个数组Arrays.toString()方法和list是不一样的,list直接可以输出,但是数组必须通过一个方法使得数组可以以字符串的格式(一整个数组变为一个字符串,重点理解,本来是一个数组的,但是通过Arrays.toString() 方法之后,生成了一个字符串,字符串的内容就是这个数组)

 System.out.println(str);
System.out.println(Arrays.toString(str));
System.out.println(list);

数组一定要通过调用数组Array的方法进行输出才能打印出完整的字符串。

String[] stringTest = {"1","2","3","4","5","6"};
int[] intTest = {1,2,3,4,5,6,7,8};
System.out.println("stringTest = "+stringTest);
System.out.println("Array.toString(stringTest) = "+Arrays.toString(stringTest));
System.out.println("intTest = "+intTest);
System.out.println("Array.toString(intTest) = "+Arrays.toString(intTest));
String[] str = f3.list();
System.out.println("str = "+str);
System.out.println("Array.toString(str) = "+Arrays.toString(str));

图片

java如何将各种类型的数组直接打印输出

图片moyingmj2019-05-10 15:40:02图片3705图片

分类专栏:Java学习与开发工作中文章标签:java数组

直接通过Arrays集合工具类提供的如下方法,来实现将各种类型的数组输出打印:

Arrays.asList(数组);

Arrays.toString(数组);

如果要将int数组打印出来,可以使用Arrays.toString。

下面有一个小例程:

package testArray;
import java.util.Arrays;
public class testArray {
    public static void main(String[] args) {
        int [] a = new int[5];
        int [] b = {1,45,65,345};
        String[] c = {"dewd","fwefew","fewf"};
        for(int i = 0; i < 5; i ++){
            a[i] = i;
        }
        System.out.println("数组A: " + Arrays.asList(a));
        System.out.println("数组B: " +Arrays.toString(b));
        System.out.println("字符串C: " +Arrays.toString(c));
        System.out.println("字符串C: " +Arrays.asList(c));
    }
}

输出结果:
数组A: [[I@28084850]

数组B: [1, 45, 65, 345]

字符串C: [dewd, fwefew, fewf]

字符串C: [dewd, fwefew, fewf]

最后修改:2020 年 12 月 09 日 11 : 51 AM