在Java中,数组不会覆盖toString(),因此如果您尝试直接打印数组,则会获得className + @ + className数组的十六进制,如下所示hashCode:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
Run Code Online (Sandbox Code Playgroud)
但通常我们实际上想要更像的东西Object.toString().这样做最简单的方法是什么?以下是一些示例输入和输出:
// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]
// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该toString(int[])方法,但我认为我做错了:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString(INT [])
我的代码:
int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;
System.out.println(array.toString());
Run Code Online (Sandbox Code Playgroud)
输出是:
[I@23fc4bec
Run Code Online (Sandbox Code Playgroud)
我也尝试过像这样打印,但是:
System.out.println(new String().toString(array)); // **error on next line**
The method toString() in the type String is not applicable for the arguments (int[])
Run Code Online (Sandbox Code Playgroud)
我从更大更复杂的代码中获取了这些代码,但是如果需要我可以添加它.但这应该提供一般信息.
我正在寻找输出,就像在Oracle的文档中一样:
字符串表示由数组元素的列表组成,用方括号括起来("[]").相邻元素由字符","(逗号后跟空格)分隔.
这是java包树:http: //docs.oracle.com/javase/7/docs/api/java/lang/package-tree.html
我读了一篇关于Java的教程,该教程表明在Java数组中是对象.
数组类在哪里?为什么我们可以制作这样的数组:
byte[] byteArr = new byte[];
char[] charArr = new char[];
int[] intArr = new int[];
Run Code Online (Sandbox Code Playgroud)
并且数组将从Object继承方法; 例如:
byte thisByte = 1;
byte thatByte = 2;
byte[] theseBytes = new byte[] {thisByte, thatByte};
int inheritance = theseBytes.length; //inherited 'length' field and some methods
int wasntInWill = thatByte.length; //error
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
编辑:
根据答案,我现在知道它是一个包装final类java.lang.reflect.
我现在已经java.lang.reflect在我的Android项目中创建了一个包,并为其添加了一个名为Array.java的类.为了确认这是原始类的方式,Eclipse给了我错误"...已存在于path/to/android.jar"
如果我写出同一个类,java.lang.reflect.Array但改变toString()方法......这应该在我的应用程序中正常工作吗?
我有一个ArrayList包含User类中的一些对象.当我打印这些对象时,我得到了:
[User @ 18fd984,User @ 18fd984]
如何以正确的方式打印这些对象?
我是编程新手.我确定这个问题的答案就在那里,但我不知道该搜索什么.
好的,我会正确的.
这是我的代码:
int[] arr;
arr = new int[5];
arr[0] = 20;
arr[1] = 50;
arr[2] = 40;
arr[3] = 60;
arr[4] = 100;
System.out.println(arr);
Run Code Online (Sandbox Code Playgroud)
这编译并正常工作.这只是CMD的输出,我很头晕.
这是输出:[I@3e25a5.
我希望输出代表list(arr)中完全相同的数字.我该如何做到这一点?
我有一个字符串数组,其中包含我定义的四个元素.我怎么打字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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
[Ljava.lang.String;@3e25a5
Run Code Online (Sandbox Code Playgroud) 我很好奇为什么要Object.toString()回报这个:
return getClass().getName() + "@" + Integer.toHexString(hashCode());
Run Code Online (Sandbox Code Playgroud)
与此相反:
return getClass().getName() + "@" + hashCode();
Run Code Online (Sandbox Code Playgroud)
将哈希码显示为十六进制而不是十进制有什么好处?
可能重复:
如何以正确的方式打印对象内容?
我需要能够在我的数组列表中打印出Student对象(所有变量).这可能吗?当我尝试打印时输出这种东西,例如student.Student@82701e.我认为这是hexadecimal什么的
这是我的代码:
package student;
public class Student {
private String studentName;
private String studentNo;
private String email;
private int year;
public Student() {
this.studentName = null;
this.studentNo = null;
this.email = null;
this.year = -1;
}
public Student(String nName, String nNum, String nEmail, int nYr) {
this.studentName = nName;
this.studentNo = nNum;
this.email = nEmail;
this.year = nYr;
}
public void setStudentName(String newStudentName) {
this.studentName = newStudentName;
}
public void setStudentNo(String newStudentNo) {
this.studentNo …Run Code Online (Sandbox Code Playgroud) 我想知道当我执行以下操作时输出到底是什么.
class Data {
int a = 5;
}
class Main {
public static void main(String[] args) {
data dObj = new data();
System.out.println(dObj);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道它提供了与对象相关的东西,因为在我的例子中输出是数据@ 1ae73783.我猜1ae73783是十六进制数.我也做了一些工作并打印出来
System.out.println(dObj.hashCode());
Run Code Online (Sandbox Code Playgroud)
我的号码是415360643.我有一个整数值.我不知道什么hashCode()回归,仍然出于好奇,当我将1ae73783转换为十进制时,我得到了415360643!
这就是为什么我很好奇这个数字到底是什么.这是Java沙箱的一些内存位置还是其他一些东西?