使用System.out.println(arr)在java中打印1D chars,ints数组

时间:2013-10-22 19:33:20

标签: java

我正在使用System.out.println(arr)打印一个字符数组,我得到数组中的字符(不是空格分隔)。当我通过添加“/ t”来执行相同操作时,输出会更改,现在它会打印char数组的地址。

我尝试使用System.out.println(arr)打印1d数组,但结果不同,它在内存中打印了数组的位置。

请告诉我们发生了什么以及如何实施。

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 个答案:

答案 0 :(得分:2)

PrintStream有一个method,可以接受char[]

然而,当你{i}尝试"\t" + charArray charArray时。要执行此操作,首先必须使用String concatenation方法(Object#toString)将println转换为字符串。然后它将String传递给{{1}}。

答案 1 :(得分:2)

以下印刷声明:

System.out.println(charArr);

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

  

根据平台的默认字符编码将字符转换为字节,这些字节的编写方式与write(int)方法完全相同。

下一个印刷声明:

System.out.println("\t" + charArr); 

通过调用charArray类的String方法将toString()转换为Object,因为数组不会覆盖它。然后调用方法PrintStream#println(String)

因此,上面的print语句相当于:

System.out.println("\t" + charArr.toString()); 

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

答案 2 :(得分:-1)

访问数组元素的方法是使用括号表示法。因此,例如,如果您希望在intArr的索引0处获取int,则可以编写

System.out.println(intArr[0]);

其中括号中的数字是您想要的元素的索引,或者您可以使用

遍历所有元素的索引
for(int i = 0; i < intArr.length; i++){
    System.out.println(intArr[i]);
}

只要数组中的whats不是对象,这将起作用 - 在这种情况下,它将打印地址。