[Java]2017.03.05

来源:互联网 发布:dd是什么意思网络用语 编辑:程序博客网 时间:2024/06/02 02:22

最近忙的要死,一看我的博客,三月份都没更新了。。。衰!据说下星期可能要面试,于是复习一下Java吧。第一个是String, Stringbuffer, Stringbuilder的区别。

String

首先要明白的是Java中String是不可变的,具体这样做的好处是另外一个故事了。这里先不提了。但是String中为啥会有“+”号呢?

String s = “bbbb”;String a = "cccc" + s;

上面的代码其实是新建一个对象,将“”cccc“和"bbbb"合起来。所以这样很慢。

StringBuffer

StringBuffer 是可变的可用.toString()方法转换成String。因为它是 synchronized,所以线程安全。但是他的速度比StringBuilder要慢一点。


StringBuilder

StringBuilder也是可变的,它是synchronized 所以线程不安全,它比StringBuffer要快。


List, Set Map三种数据结构

懒得写了看这个:http://blog.csdn.net/vstar283551454/article/details/8682655

HashMap和HashTable

说这两个之前先要弄清楚,hashcode到底是什么?Java中对象都可以产生一个hashcode为的是方便进行高效查找。java中的hashcode()用于产生hashcode,对于对象hashcode返回的是地址,所以完全相等(equals)的两个对象hashcode不一样的。而对于String,则是用一种算法(暂时没有深究),相同的String返回一个hashcode,不相同的String也可能返回相同的hashcode。

具体区别见下面的博客

http://www.cnblogs.com/langtianya/archive/2013/03/19/2970273.html

主要是Hashtable线程安全,hashmap线程不安全但是速度快。HashMap允许null用containsKey/containsValue方法。HashMap实现Map interface而HashTable继承于dicitionary类。两个的hash效果是一样的。

0 0
原创粉丝点击