A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋浩 中级黑马   /  2012-6-10 23:16  /  2781 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋浩 于 2012-6-11 15:00 编辑

public class Test{
  public static void main(String args[]){
    int[] number={2,3,5,7,11,13};
    System.out.println(number);
  }
}
一个很简单的数组打印程序,运行结果是[I@de6ced,为什么不是[2,3,5,7,11,13]啊?
如果要打印成那样的结果,必须一个一个遍历数组元素吗?感觉好麻烦

8 个回复

倒序浏览
   肯定啊  你答应的数组的地址啦  如果要打印数组中的元素  必须使用数组的角标来进行  
回复 使用道具 举报
  1.                  ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(2,3,5,7,11,13));//将数组包装成ArrayList
  2.                  System.out.println(list);//ArrayList自己重写了toString方法,会打印出元素
  3. 输出:
  4. [2, 3, 5, 7, 11, 13]
复制代码
回复 使用道具 举报
直接打印number,就打印出了数组在内存中的hashCode,
视频看到后面你会用到非常给力的工具,数组转集合(Arrays.asList()),具体用法,藤椅同学已经给出了
希望能帮到你
回复 使用道具 举报
本帖最后由 淡然 于 2012-6-11 01:18 编辑

操作数组一定不要忘了工具类啊,Arrays很强大的!
它有个方法:static String toString(int[] a) 返回指定数组内容的字符串表示形式。可以让满足你的需求。
API文档摘要:
java.util
类 Arrays
java.lang.Object
  java.util.Arrays

--------------------------------------------------------------------------------

public class Arraysextends Object此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。

除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。
  1. import java.util.Arrays;

  2. public class Test{
  3.   public static void main(String args[]){
  4.     int[] number={2,3,5,7,11,13};
  5.     System.out.println(Arrays.toString(number));//static String toString(int[] a) 返回指定数组内容的字符串表示形式。
  6.   }
  7. }
复制代码
输出结果为:
D:\>javac Test.java

D:\>java Test
[2, 3, 5, 7, 11, 13]
回复 使用道具 举报
  1. class TestN{
  2.   public static void main(String args[]){
  3.     int[] number={2,3,5,7,11,13};
  4.    // System.out.println(number);//输出的地方写成number,这样就会打成数组地址,应写成number[],所以应该改成下面的内容,就没问题了
  5.   System.out.print("number=[");
  6.   for(int x=0;x<number.length;x++)
  7.      {
  8.             System.out.print(number[x]+",");
  9.         }
  10.          System.out.print("]");
  11.   }
  12. }
复制代码
回复 使用道具 举报
同学,你以为这是javascript呀,这是java呀,java是一种面向对象的强类型语言,你这么搞是不对地,要是在javascript里面搞就是对滴,上面的兄弟都该给力了,已经告诉你答案了,我就不再重复了
回复 使用道具 举报
在这段代码中你打印的是数组的地址值,要想打印出来数组的话,只能去遍历数组,利用角标。

要不然就是利用强大的ArrayList把数组包装起来,再直接打印的话就没错了。

在后面的学习资料中你会用到很强大的数据库方法。

希望对你有帮助。
回复 使用道具 举报
数组实际是在堆内存中存的元素的角标,要获取数组中的元素内容,必须要用遍历把角标遍历一次才取出元素内容,你这里是直接打印的是角标,数组存在堆内存中会有一个地址值,所以打印出来的结果是[I@de6ced  [代表一维数组,de6ced代表地址值。
若要获取元素内容,代码如下:
class Test
{
        public static void main(String args[])
        {
                int[] number={2,3,5,7,11,13};
                for (int x=0; x<number.length ;x++) //number.length是java中的一个属性,在计算arr这个数组的元素个数。
                {
                        System.out.println("number["+x+"]="+number[x]+";"); //这种格式才是打印出元素内容,通过每一个元素对应一个角标的原理。
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马