电气专业刚转软件编程,自学JAVA中遇到了问题,求前辈帮忙看看

Cl201335 2016-07-18 01:03:08


前辈帮忙看下,为什么我输入的数组是整型数组,按升序排列后输出的却是这么一串不知道从哪里来的字符串。
...全文
439 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikyotensai 2016-07-21
  • 打赏
  • 举报
回复
直接输出数组就这样
HerveyHall 2016-07-21
  • 打赏
  • 举报
回复
引用 14 楼 hhv_01 的回复:
数组是引用类型,相当于类的实例,所以输出的是数组arr的哈希码 但是楼主明显是最后输出语句System.out.println(arr);写错了,应该是
System.out.println(arr[i]);
是arr相当于类的实例(也就是数组对象),前面没说明白
HerveyHall 2016-07-21
  • 打赏
  • 举报
回复
数组是引用类型,相当于类的实例,所以输出的是数组arr的哈希码 但是楼主明显是最后输出语句System.out.println(arr);写错了,应该是
System.out.println(arr[i]);
qq_360882750 2016-07-21
  • 打赏
  • 举报
回复
数组输出方式
System.out.println(arr[i]);
李大白白 2016-07-20
  • 打赏
  • 举报
回复
引用 10 楼 hemowolf 的回复:
[quote=引用 9 楼 a241903820 的回复:] 打印一个对象,默认是打印一个对象的toString, 如果没有重写toString方法, 默认打印的就是这个对象在内存中的地址, 你说的 " 这么一串不知道从哪里来的字符串 " , 就是arr 在内存中的地址.
对象的打印缺省会调用对象的 toString 方法,这样说没错 但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址 所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道:
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做[/quote] 所以,@后面的是打印当前对象的hashcode吗? 多谢前辈指出,受教了。
knifeknife0826 2016-07-20
  • 打赏
  • 举报
回复
腾讯课堂多看视频 多敲代码。。。。。。。。
Coffee_Home 2016-07-20
  • 打赏
  • 举报
回复
楼主共勉。。同电气转JAVA,感觉转行找工作好难啊,社招过不了校招又不要。。愁死了。。 目前也在自学中,前几天正好也看到了toString这个方法,感觉楼上大大们都解释清楚了
小灰狼 2016-07-20
  • 打赏
  • 举报
回复
引用 9 楼 a241903820 的回复:
打印一个对象,默认是打印一个对象的toString, 如果没有重写toString方法, 默认打印的就是这个对象在内存中的地址, 你说的 " 这么一串不知道从哪里来的字符串 " , 就是arr 在内存中的地址.
对象的打印缺省会调用对象的 toString 方法,这样说没错 但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址 所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道:
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做
李大白白 2016-07-19
  • 打赏
  • 举报
回复
打印一个对象,默认是打印一个对象的toString, 如果没有重写toString方法, 默认打印的就是这个对象在内存中的地址, 你说的 " 这么一串不知道从哪里来的字符串 " , 就是arr 在内存中的地址.
qq_35623620 2016-07-18
  • 打赏
  • 举报
回复
我也是刚学, [ 是数组意思 i 是类型 @。。。。。。。那个是在电脑里的位置。。。。用数字表示
冬天豆腐 2016-07-18
  • 打赏
  • 举报
回复
打印arr[i]
qq_31341083 2016-07-18
  • 打赏
  • 举报
回复
数组是引用数据类型,你打的是一个对象的内存地址值
Mcroy_Ccc 2016-07-18
  • 打赏
  • 举报
回复
给你贴一段JDK的源码,之所以会产生这些字符串,是因为,int [ ] 并没有重写toString()方法,所以你直接打印该对象时,他会调用 从 Object(所有类的父类)中继承过来的toString()方法,下面就是Object类中toString()的源码: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
Cl201335 2016-07-18
  • 打赏
  • 举报
回复
引用 1 楼 kahnyy5202015 的回复:
循环输出数组里面的内容 arr[i]
谢谢,看到了。刚开始学习JAVA,不是太熟悉,认真度也不够
小灰狼 2016-07-18
  • 打赏
  • 举报
回复
arr 是数组,你每次打印的是整个数组 你在循环里打印数组元素,要加下标,见楼上两位
kahnyy5202015 2016-07-18
  • 打赏
  • 举报
回复
如果要一次输出完 不要放在循环里面 可以System.out.println(Arrays.toString(arr))
kahnyy5202015 2016-07-18
  • 打赏
  • 举报
回复
循环输出数组里面的内容 arr[i]

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧