黑马程序员技术交流社区
标题:
是关于可变参数的问题
[打印本页]
作者:
怪盗急得
时间:
2012-9-24 23:13
标题:
是关于可变参数的问题
本帖最后由 陈德基 于 2012-9-25 00:02 编辑
String[] arr = {"1","2","3","4","5"};
List list = Arrays.asList(arr);
System.out.println(list);
int[] num = {1,2,3,4,5};
list = Arrays.asList(num);
System.out.println(list);
复制代码
为什么第二个打印出来的是哈希值?int型数组不也是对象吗?而且1.5版本之后不是有自动装拆箱功能?
这里面具体的过程是什么样的,大家多指点指点。
作者:
黑马张旭明
时间:
2012-9-24 23:17
int[]的确是对象,但是它里面的值不是对象,很多情况数组是不会自动装拆箱的
作者:
严海荣
时间:
2012-9-24 23:31
Integer[] nums ={1,2,3,4,5};
List<Integer> li = Arrays.asList(nums);
System.out.println(li);
复制代码
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在,所以集合中只有一个数组对象。
打印数组对象就是哈希值了。
如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
用Integer数组,里面的数都将自动装箱成对象,集合中就全是对象了,就能打印数字了。
作者:
明光照
时间:
2012-9-24 23:34
package Test;
import java.util.Arrays;
import java.util.List;
public class Test_17 {
public static void main(String args[]){
String[] arr = {"1","2","3","4","5"};
List list = Arrays.asList(arr);
System.out.println(list);
int[] num = {1,2,3,4,5};
list = Arrays.asList(num);
System.out.println(list);
System.out.println(num);//[I@544a5ab2
}
}
//[1, 2, 3, 4, 5]
//[[I@152b6651],这不是哈希值,这是内存地址。是数组在内存中的地址
打印一个对象默认的是调用toString()方法,没有重写的情况下打印的就是对象的地址。
作者:
冯伟
时间:
2012-9-24 23:38
所谓装箱是
将基本数据类型变为包装类
,如Integer i = new Integer(x);
拆箱是将一个
包装类变为基本数据类型
,如int temp = i.intValue();
你调用Arrays.asList()时就用错了,它不能接收基本数据类型,建议你先查一下API文档再写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2