Java基础知识随笔
来源:互联网 发布:奥数优化训练22讲 编辑:程序博客网 时间:2024/06/03 23:41
一、集合部分
Java 中 ArrayList 源码浅析:
java 使用ArrayList 的构造函数
public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; }
其中
initialCapacity : 初始化容量大小的参数
elementData :一个Object 类型的数组,即实现 ArrayList 的底层数据结构,Java中对arrayList的操作都是基于该数组进行
对ArrayList 元素进行删除操作:
public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work return oldValue; }
numMoved:删除一个元素后需要移动的元素个数
System.arraycopy(elementData, index+1, elementData, index, numMoved); 将移动元素后的数组拷贝到原始数组
elementData[--size] = null; :将数组最后一个元素删掉。因为拷贝了数组后最后一个元素就是多余的了
二 、Java基本类型部分
1. Integer与int的区别:Integer是int的包装类型 是一个类 而int 是一个基本数据类型。Integer的出现体现了Java面向对象的特性。其次,在Integer类提供了许多方法进行操 作;在某些地方我们只能使用Integer 类型 比如要往集合List泛型中添加对象时,不能用int ,只能用Integer。
int i = 3; List<Integer> alist = new ArrayList<Integer>(); alist.add(i);
2. 在向一个列表里面循环添加对象时,列表里面添加的是对象的引用也就是说同一个对象后面复值会覆盖前面的
例如:
ClusterUserDetail tempClusterUserDetail = new ClusterUserDetail();for (int i = 0; i < clusterAccounts.size(); i++) { tempClusterUserDetail = this.clusterUserMapper.findClusterUserDetail(accountId, clusterId); clusterUserDetails.add(tempClusterUserDetail); }第一种写法 每次添加进去的都是tempClusterUserDetail 的引用 所以后面赋给 tempClusterUserDetail 的值会覆盖掉前面的值 最后列表里面全都是最后一次的值但是第二种写法每次都会重新new 一个对象 这样就不会覆盖掉前面的值for (int i = 0; i <clusterAccounts.size(); i++) { ClusterUserDetail tempClusterUserDetail = new ClusterUserDetail(); tempClusterUserDetail = this.clusterUserMapper.findClusterUserDetail(accountId, clusterId); clusterUserDetails.add(tempClusterUserDetail); }0 0
- java 基础知识随笔
- java基础知识随笔--类
- Java基础知识随笔
- java基础知识随笔--流程控制
- java基础知识随笔--数组对象
- java基础知识随笔2--变量类型范围和操作方法
- spring基础知识随笔
- 软件工程基础知识随笔
- 随笔四、Python基础知识
- mysql随笔(一)------基础知识
- php基础知识学习随笔
- 随笔三、Linux命令基础知识
- java 随笔
- java随笔
- java随笔
- JAVA随笔
- Java随笔
- java 随笔
- 4.5.1.1 mysql Options 配置项
- P1614 导弹拦截
- git项目添加.gitigore文件
- django中语言设置的问题
- 使用generator自动生成Mybatis映射配置文件
- Java基础知识随笔
- 数据结构之单链表(头插法)
- 《算法导论》课后题--5--第四章(0)
- windows 安装 tensorflow
- 练习
- USACO
- HDU 2177 取(2堆)石子游戏
- 字符集
- 机器学习-周志华-个人练习10.1