3

输出是什么意思...如果我们打印'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

4 回答 4

7

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

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

应该打印Hello

于 2013-08-07T05:17:20.323 回答
5

您看到这种行为是因为PrintStream.println有一个需要char[]. 从该方法的文档中:

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

当然,你的数组的元素还没有初始化,所以都是默认的char,也就是'\u0000'空字符。如果您使用可见字符填充数组,您将能够看到结果:

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

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

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

getClass().getName() + '@' + Integer.toHexString(hashCode())

作为一种解决方法,Arrays实用程序类提供了toString帮助方法来获取String数组的表示。例如:

int[] intArray = new int[] {1, 2, 3, 4, 5};
char[] charArray = new char[] {'a', 'b', 'c', 'e', 'f'};
float[] floatArray = new float[] {1.0F, 1.1F, 1.2F, 1.3F, 1.4F};
System.out.println(Arrays.toString(intArray));   // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(charArray));  // [a, b, c, e, f]
System.out.println(Arrays.toString(floatArray)); // [1.0, 1.1, 1.2, 1.3, 1.4]
于 2013-08-07T05:19:21.327 回答
0

以 16 位 Unicode '\u0000' 到 '\uFFFF' 表示的字符。在算术运算中可以被视为 [0, 65535] 范围内的 16 位无符号整数

        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);
 }
 }
于 2013-08-07T05:28:16.483 回答
0

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

于 2013-08-07T05:55:02.757 回答