首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么println(array)会有奇怪的输出?("[Ljava.lang.String;@3e25a5")

问为什么println(array)会有奇怪的输出?("[Ljava.lang.String;@3e25a5")
EN

Stack Overflow用户
提问于 2011-12-07 12:10:20
回答 6查看 97.5K关注 0票数 13

我有一个字符串数组,其中包含我定义的四个元素。为什么当我输入System.out.println(name of Array)时,它不输出元素?但是却给了我一个奇怪的输出。

这是我的代码。

代码语言:javascript
复制
public class GeniusTrial {

    public static void main(String[]args) {

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

        System.out.print(genius);
    }
}   

下面是我得到的输出:

代码语言:javascript
复制
[Ljava.lang.String;@3e25a5
EN

回答 6

Stack Overflow用户

发布于 2011-12-07 12:13:22

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

类Object的toString方法返回一个字符串,该字符串由对象所在的类的名称、at-sign字符‘@’和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回的字符串等于:

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

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

此方法返回的String由每个元素的toString()表示组成,按照元素在数组中出现的顺序并用方括号("[]")括起来。相邻元素用逗号和空格(", ")分隔。

例如,在数组上调用此方法将产生以下String

代码语言:javascript
复制
"[Einstein, , Newton, , Copernicus, , Kepler.]"

注意,出现双逗号和奇数间距是因为数组的元素String中已经有标点符号和空格。删除这些内容:

代码语言:javascript
复制
String [] genius = {"Einstein", "Newton", "Copernicus", "Kepler"};

然后,该方法将返回此String

代码语言:javascript
复制
"[Einstein, Newton, Copernicus, Kepler]"

需要注意的是,使用此方法并不会让您对生成的 String**.**的格式进行任何控制它对于快速检查数组的内容非常有用,但它的局限性超出了此目的。例如,如果您不想要方括号,或者想要逐行列出每个元素,该怎么办?

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

您可以在this Java Tutorials article中找到有关for循环的更多信息。一般来说,Java Tutorials对于初学者来说是很棒的读物,应该能很好地配合你的课程。

票数 24
EN

Stack Overflow用户

发布于 2011-12-07 12:14:46

使用Arrays类为您展开数组:

代码语言:javascript
复制
System.out.println(Arrays.toString(genius));

会给你带来

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

双逗号是因为您将它们包含在数组中;删除它们,您将得到一个很好的逗号分隔列表。

票数 11
EN

Stack Overflow用户

发布于 2011-12-07 12:13:19

你需要一个循环:

代码语言:javascript
复制
for(String gen : genius)
{
    System.out.print(gen);
}

每个对象都有一个您所看到的toString()方法,即字符串数组的toString。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8410294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档