黑马程序员技术交流社区

标题: 关于张老师说的asList的一点小问题 [打印本页]

作者: 一碗小米周    时间: 2013-12-17 14:03
标题: 关于张老师说的asList的一点小问题
本帖最后由 一碗小米周 于 2013-12-18 18:26 编辑
  1. import java.util.Arrays;


  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 String[] str = {"abc","bcd"};
  5.                 int[] a = {1,2,3};
  6.                 int[][] b={{1,2,3},{1,2,3}};
  7.                 System.out.println(Arrays.asList(str));
  8.                 System.out.println(Arrays.asList(a));
  9.                 System.out.println(Arrays.asList(b));
  10.         }

  11. }
复制代码
  1. [abc, bcd]
  2. [[I@152b6651]
  3. [[I@544a5ab2, [I@5d888759]
复制代码
我想请教下各位,那个二维数b输出结果是那样呢?按照张老师说的,int[][] b 应该是等于Object[] b的呢。那么为什么不能打印出二维数组的内容呢。求大神指导。谢谢。



作者: 夏德宇    时间: 2013-12-18 14:49
API帮助文档中asList:返回一个受指定数组支持的固定大小的列表。二维数组做参数,则返回的是数组为内容列表,打印的话就相当于直接打印多个数组。
作者: 夏德宇    时间: 2013-12-18 15:06
前面搞错了,自己试了一下,明白你的意思了。

asList()方法返回的是受指定数组支持的固定大小的列表,只是数组的另一个视图。


作者: 高丽华    时间: 2013-12-18 15:09
import java.util.Arrays;


public class Test {

        public static void main(String[] args) {
                String[] str = {"abc","bcd"};
                int[] a = {1,2,3};
                int[][] b={{1,2,3},{1,2,3}};
                System.out.println(Arrays.asList(str));//[abc, bcd]
                System.out.println(Arrays.asList(a));//[[I@152b6651]
                System.out.println(Arrays.asList(b));//[[I@544a5ab2, [I@5d888759]
        }

}
1,如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
例如:int [] arr={2,3,4};它变成集合的形式是:List<int[]>list=Arrays.asList(arr);
2,如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
例如:Integer[]arr={7,6,5};它变成集合的形式是:List<Integer]>list=Arrays.asList(arr);

作者: 夏德宇    时间: 2013-12-18 15:25
二维数组做参数,则返回的是数组为内容的列表,打印的话就相当于直接打印多个数组,所以就会输出对象的表示形式。对列表里的元素再用Arrays.asList任然不能得到二维数组的内容,是因为asList()方法返回的是受指定数组支持的固定大小的列表,只是数组的另一个视图。
作者: 夏德宇    时间: 2013-12-18 15:44
得了一分。谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2