为了账号安全,请及时绑定邮箱和手机立即绑定

请问为什么println(array)有奇怪的输出?

请问为什么println(array)有奇怪的输出?

慕田峪4524236 2020-01-06 08:00:31
我有一个字符串数组,其中定义了四个元素。当我输入时,为什么System.out.println(name of Array)不输出元素呢?而是给了我一个奇怪的输出。这是我的代码...public class GeniusTrial {    public static void main(String[]args) {        String [] genius = {"Einstein, ", "Newton, ", "Copernicus, ", "Kepler."};        System.out.print(genius);    }}   这是我得到的输出:[Ljava.lang.String;@3e25a5
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

toString()数组的方法返回String描述数组标识而不是其内容的描述。这是因为数组不会覆盖Object.toString(),其文档解释了您所看到的内容:


toString用于类的方法Object返回一个字符串,该字符串由对象是其实例的类的名称,符号字符“ @”以及对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回的字符串等于:


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

要获取String数组内容的表示形式,可以使用Arrays.toString(Object[])。


在String此方法返回由每个元素的的toString()表示,在顺序出现在阵列中并包含在方括号("[]")。相邻元素之间用逗号和空格(", ")分隔。


例如,在您的数组上调用此方法将导致以下结果String:


"[Einstein, , Newton, , Copernicus, , Kepler.]"

请注意,由于数组的元素中String已经包含标点符号和空格,因此会产生双逗号和奇数间距。删除那些:


String [] genius = {"Einstein", "Newton", "Copernicus", "Kepler"};

然后,该方法将返回以下内容String:


"[Einstein, Newton, Copernicus, Kepler]"

请务必注意,使用此方法无法控制结果的格式String。快速检查数组的内容很不错,但仅限于此用途。例如,如果您不希望使用这些方括号,或者不想逐行列出每个元素,该怎么办?


此时,您应该开始看到实现自己的方法以以特定于您的任务的方式输出数组内容的价值。正如其他人所建议的那样,请通过使用for循环并构建String要输出的新结果来进行实践。


您可以for在此Java教程文章中找到有关循环的更多信息。通常,Java入门对于初学者来说是一本好书,应该很好地配合您的课程。



查看完整回答
反对 回复 2020-01-07
?
慕少森

TA贡献2019条经验 获得超9个赞

使用Arrays类为您扩展数组:


System.out.println(Arrays.toString(genius));

会给你


[爱因斯坦,牛顿,哥白尼,开普勒。]


双重逗号是因为您将它们包括在数组中。删除它们,您会得到一个漂亮的逗号分隔列表。



查看完整回答
反对 回复 2020-01-07
  • 3 回答
  • 0 关注
  • 548 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号