【问题标题】:Printing 1D array of chars, ints in java using System.out.println(arr)使用 System.out.println(arr) 在 java 中打印一维字符数组、整数数组
【发布时间】:2013-10-22 19:33:20
【问题描述】:

我正在使用 System.out.println(arr) 打印一维字符数组,并且我得到了数组中的字符(不是空格分隔的)。当我通过添加“/t”来做同样的事情时,输出会发生变化,现在它会打印 char 数组的地址。

我尝试使用 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
    }
}

【问题讨论】:

    标签: java


    【解决方案1】:

    PrintStream 有一个method,它接受一个char[]

    但是,当您执行 "\t" + charArray 时,java 会尝试执行 String concatenation。为此,它首先必须使用Object#toString 方法(JLS 5.1.11)将charArray 转换为字符串。然后它将字符串传递给println

    【讨论】:

      【解决方案2】:

      以下打印语句:

      System.out.println(charArr);
      

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

      字符按照平台默认的字符编码转换成字节,这些字节完全按照write(int)方法的方式写入。

      而下一个打印语句:

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

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

      所以,上面的打印语句等价于:

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

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

      【讨论】:

        【解决方案3】:

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

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

        括号中的数字是您想要的元素的索引,或者您可以遍历所有元素

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-28
          • 1970-01-01
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          • 2019-10-24
          相关资源
          最近更新 更多