目录
1. java.lang
1.1 Object
1.1.1 equals()
1.1.2 toString()
1.1.3 clone()
1.2 String
1.2.1 String如何存值
1.2.2 equals()
1.2.3 startWith()
1.2.4 endWith()
1.2.5 replace()
2. java.util
2.1 ArrayList
2.1.1 构造器
2.1.2 add()
2.1.3 remove()
2.2 LinkedList
2.2.1 add()
2.2.2 get(index)
2.2.3 remove()
这是object的equals() 方法,意思是比较当前对象和传入的对象相等,他在里面直接用了 == 比较 , 在java中 == 比较是两个对象的地址是否相等, 可见如果两个对象都指向了同一块地址, 那么这两个对象一定是相等的
public boolean equals(Object obj) {
return (this == obj);
}
toString()意思是返回当前对象的字符串表达形式, Object的toString返回的是
当前类的全限定名(包全名)+@+当前类的16进制的HashCode值
clone() 方法返回一个对象的副本,clone()方法是深拷贝,即拷贝出来的对象和元对象地址不同
以下代码表示 操作原来的对象不会改变clone对象的值,因为他们的地址不同
当new一个String把132传入进去时,发现会把123作为char[]数组存储, 并把字符串的hashCode存入当前类的hash属性
String如何用equals()判断两个字符串是否相等的了呢
此序号是阅读顺序
这个方法就是判断prefix从toffset开始是否一样
prefix是是否已这个作为前缀判断, toffset是字符串开始查找的索引位置
endWith就是判断后缀的内容是否和当前字符串后缀内容一样,处理结果和startWith一样所以可以直接用starttWith
举例: "123".endWith("3")
suffix就是3(要判断的后缀字符串) | value.length就是3(当前字符串的长度,即"123") | suffix.value.length就是 1 (suffix的长度:就是"3")
startWith里的参数就是 (3,3-1) 就是当前字符串第二个位置开始到结尾是否等于3(3代表字符串)
//以后写 我太菜了
2.1.1.1 无参构造器,实例化一个空数组
size是int类型,所以现在值为0
ensureCapacityInternal(size+1) 这个方法是用来调整数组的长度(自动扩容)
此方法又调用了grow()
总结: arrayList如何实现自动扩容
当往ArrayList里添加数据的时候,会判断当前数组如果是空就使用的长度+1和默认的数组容量10比较,返回最大的数,如果数组不是空就直接返回size+1 的数, 然后如果这个size+1 大于当前数组长度就开始进行扩容, 然后就把这个size+1 扩容1.5倍赋值给原来的数组
2.1.3.1 根据索引删除
2.1.3.2 根据内容删除
这个fastRemove(index) 和上面的根据index删除元素的代码基本一样 使用数组拷贝的方式删除元素
linkedList由双向链表存储
add方法调用了linkLast方法来添加元素
get(index)里调用了node(index)方法
checkElementIndex() 就是检查index的值是否合法
node(index) 就是上面分析过得方法 ,根据索引获取对象
这是unlink() 方法
简单概括就是:
如果要删除一个对象 就是把这个对象的上一对象和下一个对象里的prev或next都重新指向, 然后清空当前对象