3.trim()去掉前后空白字符t,d,空格等
字符串不可变
9.leftPad(str,8,"power")左侧填充,长度为8
10.StringBuilder:效率高;StringBuffer:线程安全
ArrayList Vector
HashMap Hashtable
12.Object:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回结果(例):uil.Javastr@2ac1fdc4
15.ArrayList:
removeAll(Collection> c)
retainAll(Collection> c)
16.Iterator 循环遍历:
Iterator it= list.iterator();
while (it.hasNext()){
it.next();
it.remove();
}
18.使用 Date 获取当前时间,并在当前时间的基础上增加一天:
Date date=new Date(); long time=date.getTime(); date.setTime(time+24L*60*60*1000);
19.SimpleDateFormat类:
Date 和 String之间的转换:
String format(Date date): Date -> String
Date parse(String source): String -> Date
注意:使用时必须符合SimpleDateFormat的格式
29.把 myArray 转换成 List 对象:
List myList = Arrays.asList(myArray);
40.Comparable:
public int compareTo(Object o) {
return 0;
}
此时认为所有对象的值都相等,所有只能加入一个对象
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类型, 同时在创建二叉树时指定了一个比较器
那么是比较器优先
二叉树默认排序: 中序遍历, 就是由小到大, 也叫升序排序
匿名内部类通常是用来实现接口或者继承类, 实现可能只需要在特定的地方使用
44.HashSet/HashMap(key): 散列(没有顺序), 不允许重复
add(obj): 初始数组大小16
1.通过hashCode值来计算添加位置
2.位置上有元素(链表), 遍历链表, 通过equals判断是否相等
3.如果判断完不相等, 就添加到链表的末尾
判断相同的两个元素, 需要让他计算出来的位置是一样的
equals hashCode
remove(obj):
1.通过hashCode计算位置
2.位置上有元素(链表), 遍历链表, 通过equals判断是否相等
3.如果相等, 就删除这个元素
2. 对抽象类的描述正确的是
抽象类中可以有抽象方法, 可以没有抽象方法
一个类有且仅有一个父类
抽象类有构造方法, 但是抽象类不能被实例化
抽象类的构造方法, 可以在创建子类对象时调用
4. 关于final说法正确的是()
final 修饰类: 不能被继承
final 修饰方法: 不能被重写
final 修饰变量: 不能被修改, 必须初始化
final对象本身的引用(地址)不能改变, 里面的内容(值)是可以改变的
访问控制符
自己类 同包 父子类 同工程
public √ √ √ √
protected √ √ √ ×
[default] √ √ × ×
private √ × × ×
8. 类加载的执行顺序
静态的代码块 static {}
静态的成员变量 static int age = 1
静态的成员方法 加载到了内存中, 不执行
类什么时候会加载: 第一次使用类的时候
第一次被创建对象
调用静态方法
调用子类的静态方法
第一次创建子类对象
调用静态成员变量 / 子类的静态成员变量
主动加载 Class.forName("类的名字 java.lang.String")
类加载完成: (将类的信息 从 .class 文件中 读取到了 JVM 的方法区中)
会在方法区中产生一个 字节码对象 Class 对象.getClass()
JVM内存:
栈: 局部变量, 临时变量
堆: new 对象
方法区: 类的信息
12. 13 & 17 = 1 与运算
0000 1101
0001 0001
13 | 17 = 29 或运算
13 ^ 17 = 28 异或运算 (一样时0, 不同是1)
13 ^ 17 ^ 17 = 13
13. 接口 默认前缀
public static final 成员变量
public abstract 方法
19. switch()-case
支持的数据类型: int short byte char
JDK7 之后: String
20. 补码: 1 000 0111
反码: 1 000 0110
原码: 1 111 1001
原码->反码 取反,符号位不变
反码->补码 +1,符号位不变
21.插入排序:
{8, 82, 34, 27, 46, 10, 3, 6, 12, 53};
{8, | 82, 34, 27, 46, 10, 3, 6, 12, 53};
{8, 82 | 34, 27, 46, 10, 3, 6, 12, 53};
从后面挨个取出元素, 存放到前面合适的位置
和前面的队列 挨个比较
只要发现一个比它大的, 将这个位置上的元素, 依次向后移动
在空出来的位置上插入这个元素
22.重写: 子类重写父类方法
方法名相同, 参数列表也要一样
返回值: 基本数据类型-必须一样, 引用类型-子类方法的返回值只能是父类方法的返回值的子类
访问控制符: 子类方法只能更开放
异常: 子类方法的异常类型 不能多于 父类方法
static 或者 final 的方法 不能被重写的
23.int数据范围是 -2的31次方~2的31次方-1
循环次数是31
for (int i = 1; i >= 0; i = i + i) {
System.out.println(i);
}



