1.==符号比较的是哈希地址值,equal比较的是其内容
2.默认情况下每次new出来的对象哈希值都是不一样的
3.String.trim:产生一个该字符串的副本,去掉头尾空白字符(空格、换行、制表符等)
4.没什么好说的
5.String.substring:截取子字符串(左边包含右边不包含)
6.正则表达式+代表一次或多次,?代表0次或一次,*代表0次或n次
7.String.split(String s):根据s分割字符串,返回字符数组
8.StringUtils.join(Object,String s)
StringUtils 字符串操作的工具类 apache-commons-lang -> 第三方java类库 类库: JDK Library 已经写好的java代码编译后的字节码文件 已经写好的java代码, 编译后打包(jar命令), 就形成 jar 文件 如果想要使用这些java代码, 那么需要在项目中引入jar文件
9.StringUtils.leftPad("bubu",8,"power") 结果 powebubu(向左补齐至八位)
10.效率高:Stringbuilder,ArrayList,HashMap
线程安全:StringBuffer,Vector,Hashtable
11.Object类是所有类的父类
12.toString默认值是类名@地址值(十六进制)
13.ArrayList计算长度是size()不是lenth()
14.ArrayList.set(int index,Object o),将index位置上的东西替换成o,返回被替换掉的东西
15.列表的遍历删除时,注意删掉一个后整体长度会变短
16.Iterator迭代器,创建时位置在第一个元素前,用Iterator.next()移动
17.Date默认输出格式:星期(英文简写) 月份(英文简写) 日(数字) 时:分:秒 时区(默认CST) 年份(数字)
18.Date.getTime()使用的是毫秒计时(1秒=1000毫秒)
19.SimpleDateFormat是DateFormat的实现类,mm代表分钟,MM代表月份,SimpleDateFormat(Date date)按格式化返回日期
20.DateFormat是抽象类,不能创建对象,只能调用DateFormat.getInstance();
21.Calendar也要调用Calendar.getInstance();
22.Calendar万年历是精准的,如果日期超过当月最大日期,则月份增加
23.引用类传给形参传的是地址值,Integer拆箱再装箱后,地址值和原来不一样
24.没啥好说的
25.线程安全的类:Vector,Hashtable(平时不常用的)
26.没啥好说的
27.LinkedList:善于增删,不善于改查,ArrayList相反
28.
Collection:
-List(线性表):
-ArrayList
-LinkedList
-Deque
-LinkeList
-Set(基于Map实现,散列表,不允许重复):
-HashSet
-TreeSet
Map(散列表,不允许重复,不可迭代):
-HashMap
-TreeMap
29.Array.asList(Object[] arr)是静态方法
30.编译失败代表是语法有问题,异常不是编译失败
31.注意给变量赋值时类型的转化
32.因为子函数的形参列表中,list没有添加泛型,所以可以加。加泛型时一定要仔细,如果用了泛型,一定要在每个用到的地方都加上泛型
33.泛型只能是引用类型,不能是基本类型
34.除了Map其他都可以使用foreach迭代器
35.List.subList(int beginIndex,int endIndex) 返回截取的子字符串(左闭右开)
36.poll(截取)出队列,peek(偷窥)不出队列
37.Deque使用push和pop用于栈操作,poll和peek用于队列操作
38.没什么好说的
39.Coparable接口代表可以比较,要重写compareTo方法,需要比较也可以使用比较器Comparator
40.
TreeSet -> 底层使用就是 TreeMap 针对 key 来定制的原理 TreeSet implements SortedSet(I) Comparable -> compareTo Comparator -> compare TreeSet/TreeMap(key) 二叉树: 左 < 中 < 右, 不允许重复 Object对象比较大小, 默认Comparable, 或者使用比较器Comparator class Foo implements Comparable {} -> 类本身是可比较的, 所以可以直接加入到TreeSet中 比较时, 会转换成 Comparable , 调用compareTo方法比较 如果Foo 不是 Comparable类型, 就会抛出 ClassCastException 可以指定一个比较器对象, 比较时使用比较器的compare方法 如果Foo 既是 Comparable类型, 同时在创建二叉树时指定了一个比较器 那么是比较器优先 二叉树默认排序: 中序遍历, 就是由小到大, 也叫升序排序 匿名内部类通常是用来实现接口或者继承类, 实现可能只需要在特定的地方使用
41.没什么好说的
42.注意compare中比较是反的,所以TreeMap从视觉上来看是从大到小排序(反序输出)
43.Collections.sort(List<T> list,Comparator<? super T> c) 对list进行排序
44.
HashSet/HashMap(key): 散列(没有顺序), 不允许重复 add(obj): 初始数组大小16 1.通过hashCode值来计算添加位置 2.位置上有元素(链表), 遍历链表, 通过equals判断是否相等 3.如果判断完不相等, 就添加到链表的末尾 判断相同的两个元素, 需要让他计算出来的位置是一样的 equals hashCode remove(obj): 1.通过hashCode计算位置 2.位置上有元素(链表), 遍历链表, 通过equals判断是否相等 3.如果相等, 就删除这个元素
45.同43题
46.重写equals方法后,hashcode方法也要重写
47.因为k2在HashSet中的位置已经固定,所以就算k2的hash值变了,位置也不会变,除非把k2变回来,否则永远也删不掉
48.equals方法中用了哪些变量,hashcode中就必须使用相同的变量
49.
map常用API Object put(key, value) 第一次添加返回null, 被替换返回被替换掉的值value Object remove(key) 返回被删除的value Object get(key) 返回key对应的value值
50.EntrySet:返回键值对