点滴记录

  1. 类中的实例变量,定义时指定初始值和非静态初始化块中指定初始值都会在构造块前执行,并且两者执行的顺序和它们在源代码中的顺序一致。
    数组

    以下:闭包

    第2),3)处的代码都会在1)处前执行,实际上他们通过编译器处理以后,2),3)处对应的代码会被合并到构造器中,而且放在构造器里面原来的代码的前面,因此才会先执行。线程

  2. 继承成员变量和继承方法的区别。代理

        经过例子能够看出:变量的取值取决于声明该变量的对象,而方法的行为则取决于它所实际引用的对象的类型。
对象

3.  为何内部类中的局部变量要使用final修饰符?继承

    咱们都知道当一个方法中的匿名内部类或局部内部类须要方法方法中的局部变量时,该变量必需要使用final修饰,这跟局部变量的生命周期有关。接口

    局部变量的做用域仅在方法内部,方法结束,局部变量也就消失了,可是内部类则可能产生隐式的'闭包',使得局部变量脱离它的方法继续运行。好比:内部类使用了线程,调用了局部变量,...生命周期

4. HashSet,TreeSet的底层其实也是使用HashMap,TreeMap实现的,全部放在HashSet中的元素实际上由HashMap的key来保存的,而对应的value则是一个PRESENT,一个静态的Object对象。
作用域

5. 下面的语句建立了几个字符串对象?字符串

    String str = "Hello"+"Java,"+"utest" ;

    笔试时可能有遇到的,其实这条代码就只建立了一个对象,由于str的值能够在编译时肯定下来,JVM会在编译时就计算出str的值“HelloJava,utest”,而后将该字符串放入字符串池中,并让str指向它 。

6. 静态方法是属于类的。

    

      尽管a=null,可是不影响info方法的执行,实际上实例对象调用静态方法最终仍是转化成类调用方法。

7.  catch块中若试图捕获的异常XxxException是Checked异常,那么它对应的try必须是有可能抛出XxxException或其子类的异常,不然编译器将提示改程序编译错误,可是Exception异常除外。

     

8. 就HashMap来讲,若是插入节点时Hash表的节点总数大于“threshold",则会resize这个数组,也就是数组大小会发生扩容,一般扩容为原来的2倍,在扩容的过程当中会致使一样的元素计算出来的下标发生改变,所以须要遍历原有的Hash表的全部节点,即遍历每个单向链表,每一个节点将按照新的hash表来计算出本身的位置,逐个迁移到新的hash表上,咱们一般把这个过程叫作rehash过程。

9. JDK动态代理在生成动态字节码时,并非经过实现类建立子类的方式,而是经过类所拥有的接口列表来完成的。也就是说,构造出来的类和实际的实现类一点关系都没有,是一个彻底独立的类,只有接口的方法名和原始对象的方法名相同而已。

10. Set底层是使用Map实现的,key为Set添加的对象,value为Object。

相关文章
相关标签/搜索