前辈帮忙看下,为什么我输入的数组是整型数组,按升序排列后输出的却是这么一串不知道从哪里来的字符串。

解决方案 »

  1.   

    循环输出数组里面的内容 arr[i]
      

  2.   

    如果要一次输出完 不要放在循环里面  可以System.out.println(Arrays.toString(arr))
      

  3.   

    arr 是数组,你每次打印的是整个数组
    你在循环里打印数组元素,要加下标,见楼上两位
      

  4.   

    谢谢,看到了。刚开始学习JAVA,不是太熟悉,认真度也不够
      

  5.   

    给你贴一段JDK的源码,之所以会产生这些字符串,是因为,int [ ] 并没有重写toString()方法,所以你直接打印该对象时,他会调用 从 Object(所有类的父类)中继承过来的toString()方法,下面就是Object类中toString()的源码:
     public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
      

  6.   

    打印arr[i]
      

  7.   

    打印一个对象,默认是打印一个对象的toString, 
    如果没有重写toString方法, 默认打印的就是这个对象在内存中的地址,
    你说的 " 这么一串不知道从哪里来的字符串 " , 就是arr 在内存中的地址.
      

  8.   


    对象的打印缺省会调用对象的 toString 方法,这样说没错
    但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道:
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做
      

  9.   

    楼主共勉。。同电气转JAVA,感觉转行找工作好难啊,社招过不了校招又不要。。愁死了。。
    目前也在自学中,前几天正好也看到了toString这个方法,感觉楼上大大们都解释清楚了
      

  10.   


    对象的打印缺省会调用对象的 toString 方法,这样说没错
    但你说默认就是打印内存地址,这就是在想当然了,虽然看起来看象是一个内存地址所有的类继续自 Object,它有一个实现了的 toString 方法,看 jdk 类库源代码就知道:
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }而 Object 类的 hashCode 方法是一个native方法,它有可能是内存地址,但也可能不是,这要看 jdk 的运行平台怎么做所以,@后面的是打印当前对象的hashcode吗?
    多谢前辈指出,受教了。
      

  11.   

    数组是引用类型,相当于类的实例,所以输出的是数组arr的哈希码
    但是楼主明显是最后输出语句System.out.println(arr);写错了,应该是
    System.out.println(arr[i]);
      

  12.   

    是arr相当于类的实例(也就是数组对象),前面没说明白
      

  13.   

    数组输出方式 
    System.out.println(arr[i]);