在控制台上打印数组引用变量

时间:2013-08-07 05:14:55

标签: java arrays primitive

输出意味着什么...... 如果我们打印'intarray'我们会得到一些哈希码... &安培;同样是'floatarray' 但如果我们打印'chararray',我们什么都得不到 下面的数据是什么意思?????

class Test
{
    public static void main(String []aeg)
    {
        int []intarray = new int[5];
        char []chararray = new char[5];
        float []floatarray = new float[5];
        System.out.println(intarray);
        System.out.println(chararray);
        System.out.println(floatarray);
    }
 }

输出从这里开始

在控制台上打印后,我们得到以下输出....

      F:\Mehnat\my sc\By me\ArrayList\2\2>javac Test.java
      F:\Mehnat\my sc\By me\ArrayList\2\2>java Test
      [I@546da8eb

      [F@6b6d079a

输出结束于此

4 个答案:

答案 0 :(得分:7)

打印字符数组会尝试将数组的内容打印为字符串(一次一个字符)。您的新数组填充了未打印的空字符。尝试填写一些内容并再次检查:

chararray[0] = 'H';
chararray[1] = 'e';
chararray[2] = 'l';
chararray[3] = 'l';
chararray[4] = 'o';
System.out.println(chararray);

应打印Hello

答案 1 :(得分:3)

您看到此行为是因为PrintStream.println的重载需要char[]。从该方法的documentation

  

打印一个字符数组,然后终止该行。

当然,数组的元素尚未初始化,因此它们都是默认的char,即'\u0000',即空字符。如果使用可见字符填充数组,您将能够看到结果:

char[] charArray = new char[] {'a', 'b', 'c', 'd', 'e'};
System.out.println(charArray); //prints "abcde"

其他方法调用正在使用println(Object),它会打印对象toString的结果。数组不会覆盖toString,因此您会看到默认Object.toString实现的结果:

  

toString的{​​{1}}方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和无符号的十六进制表示形式组成。对象的哈希码。换句话说,此方法返回一个等于值的字符串:

Object

作为一种变通方法,Arrays实用程序类提供getClass().getName() + '@' + Integer.toHexString(hashCode()) 辅助方法来获取数组的toString表示。例如:

String

答案 2 :(得分:0)

字符 以16位Unicode'\ u0000'表示为'\ uFFFF'。 在算术运算

中可以被视为16位无符号整数,范围为[0,65535]
        int []intarray = new int[5];

默认值为0;

            char []chararray = new char[5];

新数组填充了未打印的空字符

          float []floatarray = new float[5];




    Ex:


 class Whatever {
 public static void main(String args[]) {
 char[] hello = { 'h', 'e', 'l', 'l', 'o', '.'};
 String hello_str = new String(hello);
 System.out.println(hello + " " + hello_str);
 }
 }

答案 3 :(得分:0)

这是因为数组只包含每个其他元素的内存地址。它被称为“指针”,是一种编程概念,可能会在将来彻底挫败你。但是,打印char []数组会作为String重载,因为String实际上只是一个char数组。