输出意味着什么...... 如果我们打印'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
输出结束于此
答案 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数组。