Java中数组元素以toString()方法输出的问题,谁能帮帮我啊!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中数组元素以toString()方法输出的问题,谁能帮帮我啊!相关的知识,希望对你有一定的参考价值。

public static void main(String[]args)
int[] array= 1,2,3,4,5;
System.out.println(array.toString());

//就以上这个简单的程序,结果为:[I@15db9742
请问为什么是上面这个结果?
我知道可以遍历数组元素,然后依次输出;可是我怎么记得C#中以toString()方法输出得到的结果就是12345呢?还是我记错了!
C#中也不是toString()直接就输出12345,是我记错了!

这个打的是内存地址了,想打12345,要重载toString方法的。这里可以用Arrays.toString(array)
。下面是api的解释:

toString
public String toString()

返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())

返回:
该对象的字符串表示形式。

关于为什么会打印[,请看下面:

如果此类对象表示一个数组类,则名字的内部形式为:表示该数组嵌套深度的一个或多个 '[' 字符加元素类型名。元素类型名的编码如下:

Element Type

Encoding

boolean Z
byte B
char C
class or interface Lclassname;
double D
float F
int I
long J
short S
类或接口名 classname 是上面指定类的二进制名称。
示例:
String.class.getName()
returns "java.lang.String"
byte.class.getName()
returns "byte"
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"
参考技术A java和c语言不一样,c可以直接输出数组
java输出数组这里调用toString方法,如果数组中不是数字或者字符串,返回的是字符串[类型@哈希值]
可以使用Arrays.toString()方法来输出此类数组或者把这个数组作为参数创建一个对象再来输出。
参考技术B 数组是对象,底层应该没有重写object的toString方法,
public String toString()
return getClass().getName() + "@" + Integer.toHexString(hashCode());


要遍历数据用java.util.Arrays工具类
Arrays.toString(array)
得到结果
[1, 2, 3, 4, 5]
参考技术C array.join 参考技术D 这个是打印的是内存地址,数组就是的

以上是关于Java中数组元素以toString()方法输出的问题,谁能帮帮我啊!的主要内容,如果未能解决你的问题,请参考以下文章

javascript中toString()方法的用法?

Java中Collection元素打印的问题,图中两句话都打印[张三,李四],还有这里的toString()怎么理解

数组中的toString,toLocalString,valueOf方法有啥区别

Array : 数组的常用方法

Java 输出数组的方法

Java 中带参带返回值方法的使用