我正在使用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
}
}
答案 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不是对象,这将起作用 - 在这种情况下,它将打印地址。