所以在开始时,我只是将这段代码添加到我的数组中:
public void getMyArray()
{
myArray[0] = ("String1");
myArray[1] = ("String2");
}
但每当我调用它时,我一直得到一个空指针异常,我不知道为什么。所以我把我的代码更改为:
public void getMyArray()
{
String [] myArray = {"String1", "String2"};
System.out.println(myArray);
}
现在我得到了打印时的地址:
[Ljava.lang.String; @ 1ca6218
答案 0 :(得分:2)
您可以像这样使用Arrays.toString()
:
System.out.println(Arrays.toString(myArray));
在代码中替换它:
public void getMyArray()
{
String [] myArray = {"String1", "String2"};
System.out.println(Arrays.toString(myArray));
}
输出将是:
[String1, String2]
答案 1 :(得分:0)
数组的toString()方法不会打印出java中数组中的所有对象,除非您想要覆盖它并进行自己的实现。什么是打印是对数组对象的描述。
要打印数组中的所有元素,您可以执行以下操作:
for(String myArray1 : myArray) {
System.out.println(myArray1);
}
此外,java中的数组大小在实例化时是固定的。无论你为阵列分配多少内存,都可以留下来。如果您想更改大小,请查看ArrayLists或LinkedLists以及其他结构。希望这会有所帮助。
答案 2 :(得分:0)
我想你不是在任何地方初始化你的数组,使用像
这样的东西myArray = new String[2];
但是,除此之外,你在那里的第二个选项是打印,因为它实际上打印了String数组的对象字符串编码。相反,你将不得不循环遍历每个元素并单独打印
for(int i = 0; i < myArray.length; i++)
{
System.out.println(myArray[i]);
}
答案 3 :(得分:0)
输出[Ljava.lang.String;@1ca6218
的原因是对象的默认字符串表示形式是JVM中的字节码表示。
由于Java语言无法覆盖数组的toString()
,因此您可以创建一个实用程序方法来生成更合适的字符串。
以下是您的示例:
public static String arrayToString(String[] array) {
StringBuilder builder = new StringBuilder();
for (String s : array) builder.append(s).append(" ");
String result = builder.toString();
return result.substring(0, result.length() - 1);
}
您还可以使用Java的内置数组通过Arrays
实用程序类进行字符串输入:
Arrays.toString(myArray)
您获得空指针或索引超出范围的原因是因为您的数组变量引用是null
或不是适当大小的数组。
在您的问题中,您需要一个包含2个元素的数组,因此new String[2]
然后您可以使用正常分配,它应该可以使用上述方法打印出字符串。
String[] myArray = new String[2];
myArray[0] = "Hello";
myArray[1] = "there.";
System.out.println(Arrays.toString(myArray));
答案 4 :(得分:0)
使用java.util.Arrays#toString
System.out.println(Arrays.toString(myArray));