使用System.out.println(arr)在Java中打印一维字符和整数数组。

3
我正在使用System.out.println(arr)打印一个字符的一维数组,输出结果是数组中的字符(没有空格隔开)。但是当我添加"/t"时,输出结果会改变,它会打印字符数组的地址。我尝试使用System.out.println(arr)打印一个整数的一维数组,但结果不同,它会打印出内存中数组的位置。请告诉我发生了什么以及这是如何实现的。
import java.io.*;
import java.math.*;
import java.util.*;
import java.lang.*;

class Main3{ 

    public static void main(String[] args)throws java.lang.Exception{
        int[] intArr = {1,2,3,4};
        char[] charArr = {'a' , 'b' };
        System. out.println(intArr);             // prints the address of the intArr
        System. out.println(charArr);            // prints the charArr contents 
        System.out.println("\t" + charArr);      // prints the address of the charArr after a tab
    }
}
3个回答

2
以下是打印语句:
System.out.println(charArr);

调用PrintStream#println(char[])方法。根据文档:

字符将根据平台的默认字符编码转换为字节,并且这些字节将按照write(int)方法的方式精确地写入。

而下一个打印语句:
System.out.println("\t" + charArr); 

将`charArray`转换为`String`,通过调用`Object`类的`toString()`方法实现,因为数组没有重写该方法。然后调用方法PrintStream#println(String)
因此,上述打印语句等价于:
System.out.println("\t" + charArr.toString()); 

查看Object#toString()方法,了解它如何形成数组的字符串。

2

-1
访问数组元素的方式是使用方括号表示法。例如,如果您想获取intArr中索引为0的整数,则可以编写以下代码:
System.out.println(intArr[0]);

括号中的数字是你想要的元素的索引,或者你可以通过迭代来访问所有的元素

for(int i = 0; i < intArr.length; i++){
    System.out.println(intArr[i]);
}

只要数组中的内容不是对象,这段代码就能正常工作——否则它会打印出地址。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接