Java基础知识2

作者: singworld 分类: Java 发布时间: 2019-04-14 10:00

“==”和equals

==用来判断两个变量之间的值是否相等。

screenshot_upload_tmp.jpeg

如果是基本数据类型的变量比较值而引用类型比较对应引用的内存的首地址

equals比较两个对象长的是否一样 判断两个对象的某些特征是否一样,实际上就是调用对象的equals方法进行比较

需要重写object的equals方法

String和StringBuilder的区别 StringBuffer和StringBuilder的区别

String是内容不可变的字符
StringBuilder StringBuffer是内容可以改变的字符串
String底层使用了不可变的字符数组(final char[])
StringBuilder StringBuffer底层使用的是可变的字符数组

拼接字符串

  1. String进行拼接String c = “a” + “b”;
  2. StringBuilder 或StringBuffer
    StringBuilder sb = new StringBuilder();
    sb.apend(“a”).apend(“b”)
    StringBuilder是线程不安全的
    StringBuffer是线程安全的

Java中的集合

Java中的集合分为值和key-value两种

存储值的分为List和Set

List是有序的,可以重复的
Set是无序的,不可以重复的 根据equals和hashcode判断,如果一个对象要存储Set中,必须重写equals和hashCode方法

ARRYLIST和LINKEDLIST的区别,使用场景

ArryList使用数组
LinkedList使用的是链表
数组具有查询特定元素比较快,插入修改删除比较慢(数组在内存中是一个连续的内存,插入修改删除需要移动内存)
链表插入和删除比较快,链表不要求内存连续,在当前元素中存放下一个或上一个元素的地址,查询需要从头开始,查询效率较低。插入时不需要移动内存,只需改变引用指向

ArrayList使用在查询比较多,插入和删除比较少的情况,而LinkedList使用在查询比较少而插入删除比较多的情况

存储key——value的为map

HASHMAP和HASHTABLE的区别 HASHTABLE和CONCURRENTHASHMAP的区别

相同点:HashMap和hashTable都可以存储key-value的数据
区别:

  1. HashMap可以把null作为key和value 而HashTable不可以
  2. HashMap是线程不安全的,效率较高而HashTable是线程安全的

想要线程安全效率又高?ConcurrentHashMap
通过把整个Map分为N个Segment(类似Hashtable),可以提供线程安全,但是效率提升N倍,默认提升16倍

Leave a Reply

Your email address will not be published. Required fields are marked *