zoukankan      html  css  js  c++  java
  • java错题集

    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的
     
    --------------------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
  • 相关阅读:
    LeetCode 122 best-time-to-buy-and-sell-stock-ii 详解
    LeetCode 763划分字母区间 详解
    LeetCode 861翻转矩阵后得分详细解法
    DES算法的python3实现
    LeetCode 309 Best Time to Buy and Sell Stock with Cooldown 解决方案
    Android Studio Gradle build 报错:Received status code 400 from server: Bad Request
    Error:Failed to resolve: com.android.support:recyclerview-v7:28.0.0解决方法
    身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    小程序跳转方式如:(wx.navigateTo)
    requset.js 封装promise的请求方法
  • 原文地址:https://www.cnblogs.com/lbloveab/p/7266796.html
Copyright © 2011-2022 走看看