JS 与 trick 代码的运用及解析全攻略
726
2022-10-17
关于数组的基本知识
很惭愧,用java4年多了,一直都没有记住java数组的初始化方式,之前都是用arraylist的,现在记录一下
基础知识
package toyprogram;/** * This class is used for ... * * @author dlf(460795365@qq.com) * @version 1.0, 2016年9月13日 下午3:39:42 */public class AboutArrayl { @SuppressWarnings("unused") public static void main(String[] args) { int[] a = { 2, 3 }; int[] b = new int[5]; int[] c = new int[] { 1, 8 }; b[0] = 10; System.out.println(b.length); // output 5 int[][] i = { { 1, 2, 3 }, { 2, 3, 4 }, { 1, 3, 4 } }; String s[][]; s = new String[3][]; s[0] = new String[2]; s[1] = new String[3]; s[2] = new String[2]; int a1[][] = new int[10][10]; int[][] a2 = new int[10][10]; int[] a3[] = new int[10][10]; //下面的两个 是错误的 // int a4[][] = new int[][]; // int a5[10][10] = new int[][]; }}
ArrayList转化为数组
//ArrayList.java public Object[] toArray() { return Arrays.copyOf(elementData, size); }
数组转化成Arraylist
方法一
String[] userid = {"aa","bb","cc"};List
//Collections.java public static
很奇怪result |= c.add(element);就等于result=result| c.add(element);
添加10个元素,如果每个都失败了,addAll整体才会返回false,只要有一个成功,返回的就是true
//Arraylist.java public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
返回的都是true!!
方法二
String[] userid = {"aa","bb","cc"};List
另:Arrays.asList()返回一个受指定数组支持的固定大小的列表。所以不能做Add、Remove等操作。
如果进行add,remove操作会咋样呢?
简单呀,报错:Exception in thread "main" java.lang.UnsupportedOperationException
List list = new ArrayList(Arrays.asList(userid));这样操作就可以了。 不过为啥Arrays.asList()返回一个受指定数组支持的固定大小的列表? 看源码呗
//Arrays.java public static
注意上面的ArrayList不是java.util.ArrayList,而是Arrays的一个内部静态类
private static class ArrayList
大大的final看到了吗?
//
随后补充
因为E[] a 被final修饰所以报出了Exception in thread "main" java.lang.UnsupportedOperationException这个错误么?
错了,final修饰了某个变量,那么我仍然可以修改这个变量本身,但是不能修改它在内存中的位置
例如 final Person p=new Person();
然后我可以调用p.setName,调用几次都行,但是我不能再次new一个person给p,例如:p=new Person();
所以报的错误和final无关
那么到底是怎么回事呢?
java.util.Arrays.ArrayList继承自AbstractList,而AbstractList的add方法如下:
//AbstractList.java public boolean add(E e) { add(size(), e); return true; } public void add(int index, E element) { throw new UnsupportedOperationException(); }
/
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~