A  java是强类型语言,所有的方法必须放在类里面,包括main
B  java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口
C  内部类的类名一般与文件名不同
D  函数都必须用{}括起来,不管是一条语句还是多条语句
--------------------------------------------------------------------------------------------------------------------------
首先先补充一下arrayList扩容的知识点
java源码:
public void ensureCapacity(int minCapacity) {
	modCount++;
	int oldCapacity = elementData.length;
	if (minCapacity > oldCapacity) {
	    Object oldData[] = elementData;
	    int newCapacity = (oldCapacity * 3)/2 + 1;
    	    if (newCapacity < minCapacity)
		newCapacity = minCapacity;
            // minCapacity is usually close to size, so this is a win:
            elementData = Arrays.copyOf(elementData, newCapacity);
	}
    }

int newCapacity = (oldCapacity * 3)/2 + 1; 

 假设list初始化默认为10
当第第10个被赋值时list是不会增长长度的,因为此时不需要开辟新的内存
当第11个时将执行会新开辟内存 (if (minCapacity > oldCapacity) 为真 )
因为包含第11个,所以新增后数组长度则为 10 + 10/2 + 1
但是实际上未赋值的为5
也就是说每次开辟新内存时 都需要多开辟1为当前赋值用
这里明显是50%+1.

but此题不一样

ArrayList的构造函数总共有三个:

(1)ArrayList()构造一个初始容量为 10 的空列表。

(2)ArrayList(Collection<? extends E> c)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。

(3)ArrayList(int initialCapacity)构造一个具有指定初始容量的空列表。 调用的是第三个构造函数,直接初始化为大小为20的list,没有扩容,所以选择A ArrayList list=new ArrayList();   这种是默认创建大小为10的数组,每次扩容大小为1.5倍 ArrayList list=new ArrayList(20);  这种是指定数组大小的创建,没有扩充

--------------------------------------------------------------------------------------------------------------------------

桥接模式是结构型模式,关注点在依赖关系的维护。对于jdbc技术来说,它解耦了业务与数据库通信协议这两个纬度之间的关系,所以这两个纬度之间的关系就需要一个桥,即Driver,至于DriverManager把这个关系接到哪里就是运行时的事情了。
微观上,从connection的创建来看,它更像一个抽象工厂模式,特定的Driver创建对应的connection。
宏观上,从业务代码与connection的关系来看,关键点在于一个sql怎么转化为对应的通信协议,就属于桥接

--------------------------------------------------------------------------------------------------------------------------

 

效率:System.arraycopy > clone > System.copyOf > for循环

--------------------------------------------------------------------------------------------------------------------------

jdk版本的改动,抽象类与接口发生变化

关于抽象类
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default

关于接口
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的
 
--------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 

 

 posted on 2017-08-01 09:31  城管也会敲代码  阅读(150)  评论(0编辑  收藏  举报