LinkedList类继承自AbstractSequentialList
ArrayList list=new ArrayList(); 这种是默认创建大小为10的数组,每次扩容大小为1.5倍;ArrayList list=new ArrayList(20);这种是指定数组大小的创建,创建时直接分配其大小,扩充0次
Iterator迭代器包含的方法有:
hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false
next():返回集合中Iterator指向位置后面的元素
remove():删除集合中Iterator指向位置后面的元素
继承和实现
继承(Inheritance):如果多个类的某部分功能相同,那么可以抽象出一个类出来,把他们的相同部分都放到父类里,让他们继承这个父类
实现(Implement):如果多个类处理的目标一样,但是处理的方法方式不同,那就定义一个接口,也就是一个标准,让他们的实现这个接口,各自实现自己具体的处理方法来处理那个目标
继承的根本原因是因为要复用,而实现的根本原因是需要定义一个标准
Java中,继承用extends关键字实现,实现用implements关键字实现
实现List接口
ArrayList、LinkedList、Vector
String str = “xxx”和String str = new String(“xxx”);
前者创建对象0或1,通过判断常量池是否已经有这个常量;后者1或2,一定会创建堆的对象再加常量池的1或2
如果new多个一样的String,他们的地址是不一样的
图片原文链接:https://blog.csdn.net/dreamzuora/article/details/79464081
String s0=“abc”;
String s1=“abcd”;
String s2=s0+“d”;
String s3=“abc”+“d”;
s1= = s2 false s1==s3 true
因为s3的相加方式是相当于直接指向常量池的"abcd",和s1等价。而s2的相加方式等价于s2 = new StringBuilder(s0 ).append( “d”).toString();是相当于s2指向一个堆的对象,这个对象再引用常量池的“abcd“。跟上图的情况一样。
String类型中"= ="和"equals"的区别
"= ="比较的是两个字符串的内存地址。 "equals"比较的是两个字符串的实际值。
Object类方法
String的hashCode
String重写了hashcode()方法,String类型的hash值是根据字符串的内容来决定的,并不是内存地址,只要两个String类型的字符串内容一致,那么两者的hashcode就相同。
异常
运行时异常:RuntimeException——通常是由于逻辑错误产生的,常见的NullPointException,ClassCastException,IndexOutOfBoundsException等。运行时异常在默认情况下会得到自动处理,所以通常用不着捕获RuntimeException。
编译期异常:NonRuntimeException——必须处理,否则程序编译无法通过,这类异常在编译时需要捕获,常见的有IOException,SQLException等
并发并行
并发(concurrency):把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。(时间片调度)
并行(parallelism):把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。(多线程绑定CPU)