[Java]2017.03.05

最近忙的要死,一看我的博客,三月份都没更新了。。。衰!据说下星期可能要面试,于是复习一下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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值