电气专业刚转软件编程,自学JAVA中遇到了问题,求前辈帮忙看看 前辈帮忙看下,为什么我输入的数组是整型数组,按升序排列后输出的却是这么一串不知道从哪里来的字符串。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 循环输出数组里面的内容 arr[i] 如果要一次输出完 不要放在循环里面 可以System.out.println(Arrays.toString(arr)) arr 是数组,你每次打印的是整个数组你在循环里打印数组元素,要加下标,见楼上两位 谢谢,看到了。刚开始学习JAVA,不是太熟悉,认真度也不够 给你贴一段JDK的源码,之所以会产生这些字符串,是因为,int [ ] 并没有重写toString()方法,所以你直接打印该对象时,他会调用 从 Object(所有类的父类)中继承过来的toString()方法,下面就是Object类中toString()的源码: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 打印arr[i] 打印一个对象,默认是打印一个对象的toString, 如果没有重写toString方法, 默认打印的就是这个对象在内存中的地址,你说的 " 这么一串不知道从哪里来的字符串 " , 就是arr 在内存中的地址. 对象的打印缺省会调用对象的 toString 方法,这样说没错但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做 楼主共勉。。同电气转JAVA,感觉转行找工作好难啊,社招过不了校招又不要。。愁死了。。目前也在自学中,前几天正好也看到了toString这个方法,感觉楼上大大们都解释清楚了 对象的打印缺省会调用对象的 toString 方法,这样说没错但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做所以,@后面的是打印当前对象的hashcode吗?多谢前辈指出,受教了。 数组是引用类型,相当于类的实例,所以输出的是数组arr的哈希码但是楼主明显是最后输出语句System.out.println(arr);写错了,应该是System.out.println(arr[i]); 是arr相当于类的实例(也就是数组对象),前面没说明白 数组输出方式 System.out.println(arr[i]); 为嘛这样可以实现递归,不懂啊,求高手指点 JMenuItem监听的问题 如何读取HTTP请求和XML读取!!!!!!!!!!!!!!(急) 打开新窗口 怎么样求出局域网上另外一台机器上的系统当前时间?要求精确到毫秒!!在线等待,马上结分! if(item.getValueString()==null)不执行? 怎样制作jar文件 关于paint方法的问题???请大家都看看 java怎样生成可执行文件? 有没有人能教我一点有效使用API的方法。 小白求问for语句嵌套 做一个学生管理系统的具体步骤
你在循环里打印数组元素,要加下标,见楼上两位
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
如果没有重写toString方法, 默认打印的就是这个对象在内存中的地址,
你说的 " 这么一串不知道从哪里来的字符串 " , 就是arr 在内存中的地址.
对象的打印缺省会调用对象的 toString 方法,这样说没错
但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做
目前也在自学中,前几天正好也看到了toString这个方法,感觉楼上大大们都解释清楚了
对象的打印缺省会调用对象的 toString 方法,这样说没错
但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做所以,@后面的是打印当前对象的hashcode吗?
多谢前辈指出,受教了。
但是楼主明显是最后输出语句System.out.println(arr);写错了,应该是
System.out.println(arr[i]);
System.out.println(arr[i]);