资料整理自网上,若有错误请及时通知博主。
java的数组一般可以分为int数组和String数组。先看下面的例子:
public static void main(String[] args) { List<String> al = new ArrayList<>(); String[] nums = { "10", "20" }; al = Arrays.asList(nums); for (int i = 0; i < al.size(); i++) { System.out.println(al.get(i)); } } 运行结果是: 10 20再看下面的一个例子:
public static void main(String[] args) { List<int[]> al = new ArrayList<>(); int[] nums = {10, 20}; al = Arrays.asList(nums); for (int i = 0; i < al.size(); i++) { System.out.println(al.get(i)); } } 运行结果是: [I@15db9742这里就会有一个疑问了,为什么当数组是整形的时候,返回的是一个看不懂的东西,而不是我们以为的“10”和“20”呢?
事实上,在第2个例子里面,那一个看不懂的东西是al对象的物理地址,如果此时我们想得到里面的元素,不妨可以使用下面的代码:
public static void main(String[] args) { List<int[]> al = new ArrayList<>(); int[] nums = {10, 20}; al = Arrays.asList(nums); System.out.println(al.size()); for (int i = 0; i < nums.length; i++) { System.out.println(al.get(0)[i]); } } 运行结果是: 1 10 20首先我们用实际结果看下:al.get(index)到底输出的是什么,可以输出多少个变量?
我们打印出al对象的大小,是1,可见里面就一个量。这个量存储了这个列表的内存地址。这也是为什么后面使用al.get(0)的原因。
地址找到了,就可以跟操作数组的原理一样了,在后面加上索引就可以得到我们想要的元素了。
再看下面一个例子,如果我们想从整形数组转换为列表,然后再由这个列表转换为整形数组,该怎样操作呢?
public static void main(String[] args) { List<int[]> al = new ArrayList<>(); int[] nums = {10, 20}; al = Arrays.asList(nums); int[] nums2 = al.get(0); for (int i = 0; i < nums2.length; i++) { System.out.println(nums2[i]); } } 输出结果是: 10 20原理和第2个例子一样。