发表于: 2017-08-01 23:32:52

1 1038


一、今天完成的事情:

    记录一下面试题:

    

   $static是一个修饰符,用于修饰成员(成员变量和成员函数)。

*被static修饰后的成员具有的特点:

  A:随着类的加载而加载。

  B:优先于对象存在(即在创建对象之前,就已经随着类的加载而存在)。

  C:可被所以对象共享。

  D:可以直接被类名调用(就是说没有创建对象,也可以调用)。

*被static修饰的成员变量叫静态变量,静态变量与成员变量的区别:

  ,两个变量的生命周期不同。

      A:成员变量随着对象的创建而存在随着对象的回收而释放。

      B:静态变量随着类的加载而加载,随着类的消失而消失。

  ,调用方式不同。

      A:成员变量只能被对象调用。

      B:静态变量可以被对象调用也可以被类名调用。

  ,开发是的叫法不一样:

      A:成员变量也叫做实例变量。

      B:静态变量成为类变量。

  ,数据存储位置不同。

      A:成员变量数据存储在堆内存的对象中,所以也叫做对象的特有数据。

      B:静态变量数据存储在方法区(有的翻译为共享区,有的翻译为共享数据区)的静态区,所以也叫对象的共享数据。

  *关于静态修饰符static的几点特别注意点。

      A:静态方法只能访问静态成员。//非静态方法既可以访问静态成员,也可以访问非静态成员。(静态成员包括:静态变量与静态方法)

      B:静态方法中不能使用关键字this或者super。(也就是静态方法中不能出现非静态的成员变量)

      C:主函数的 修饰 必须为 static。

      D:静态方法中要,要调用非静态方法是可以可以使用对象来调用。(即调用前先创建个对象,再使用 (对象.方法)来调用)

抽象类只能被单继承、接口可以被多实现,避免了单继承的局限性。 

抽象类中可以定义抽象方法,和非抽象方法,它可以用于定义体系的基本共性的内容。接口中只能定义抽象方法,它主要用于对象的功能的扩展。 

抽象类是继承关系,是is a关系,接口是实现关系是like a关系。 

抽象类中的成员修饰符都是自定义的,接口中的修饰符都是固定的。

ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。

  LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。

  Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。

 对于需要快速插入,删除元素,应该使用LinkedList。

 对于需要快速随机访问元素,应该使用ArrayList。

对于“多线程环境,且List可能同时被多个线程操作”,此时,应该使用同步的类(如Vector)。

.线程的周期:

 新建->就绪->运行->阻塞->死亡

 

  线程的属性特点:

 轻型实体

 独立调度和分派的基本单位

 可并发执行

 共享进程资源

 一个进程,可以有多个线程,但是有且只有一个主线程,如果还有线程的话,那么其他的都是副线程,一般主线程都是用来显示界面的,副线程用来做异步处理。

synchronized、Condition接口

HashMap和HashTable

线程安全不同

Hashtable是线程安全,HashMap非线程安全。

是否允许null值不同

HashMap可以使用null作为key、value,并且null元素会计入size。

Hashtable不允许null作为key、value,当出现null值会抛出异常。

HashMap继承于AbstractMap,而Hashtable继承于Dictionary。

初始容量和扩容策略不同

HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75

HashMap扩容时是当前容量翻倍即:capacity*2,Hashtable扩容时是容量翻倍+1即capacity*2+1

计算hash的方法不同

Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模

HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取摸

使用场景

非并发场景使用HashMap,并发场景可以使用Hashtable,但是推荐使用ConcurrentHashMap(锁粒度更低、效率更高)。

另外使用在使用HashMap时要注意null值的判断, 

Hashtable也要注意防止put null key和 null value。

二、遇到的问题:无

三、明天计划的事情:

四、收获:为明天打个基础



返回列表 返回列表
评论

    分享到