易混淆概念的区分总结

一、String/StringBuffer/StringBuilder的区别

1、String

  • 长度一旦定义则不可改变;
  • String对象的修改需创建一个新对象,再存入新的值;
  • String类不能被继承;
  • 可赋空值 String s = null;

2、StringBuffer

  • 可变对象,做修改时不用重建对象;
  • 不可赋空值 StringBuffer s = null; 会警告错误
  • 效率低、线程安全类,多线程操作字符串时使用;

3、StringBuilder

  • 效率高、线程不安全,单线程操作字符串时使用;

二、ArrayList/LinkedList

1、ArrayList基于动态数组的数据结构,而LinkedList是基于链表的数据结构;
2、都可存储对象的引用;
3、对于随机访问get/set,因LinkedList要移动指针,故ArrayList要优于LinkedList;
4、对于add/remove,因ArrayList要移动数据,故LinkedList占优势;
简而言之,arrayList查询快,LinkedList增删快

三、 HashMap/HashTable

1、HashMap允许空键值,而HashTable不允许;
2、前者是Java1.2引进的Map接口的一个实现,而HashTable是基于陈旧的Dictionary类;
3、HashMap线程不安全,多线程访问需提供外同步,而HashTable用了Synchronized线程安全;
4、HashMap中没有HashTable中的contains方法,改成了containsValue/containsKey;
5、两者算法大概一样,性能无太大差异,HashMap相对在只有一个线程访问时效率高些;

四、Serializable/Parcelable的特点和区别

serializable

  1. java的序列化技术,最简单的使用方式为在需要序列化的class增加implements Serializable;
  2. Seralizable相对Parcelable而言,好处就是非常简单,只需对需要序列化的类class执行就可以,不需要手动去处理序列化和反序列化的过程,所以常常用于网络请求数据处理,Activity之间传递值的使用;
  3. Seralizable无法序列化静态变量,使用transient修饰的对象也无法序列化
  4. 当一个父类实现序列化,子类自动实现序列化,不需要再显示实现Serializable接口

Parcelable

  1. android特有的序列化API,它的出现是为了解决Serializable在序列化的过程中消耗资源严重的问题,但因本身使用需要手动处理序列化和反序列化过程,会与具体的代码绑定,使用较为繁琐,一般只获取内存数据的时候使用。
  2. Parcelable的三个过程:序列化、反序列化和描述
  3. 使用实例?

五、View/SurfaceView/GLSurfaceView区别

View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。

SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快。

GLSurfaceView:基于SurfaceView视图再次进行拓展的视图类,专用于3D游戏开发的视图;是SurfaceView的子类,openGL专用。

六、xml/json的用法及区别

七、xml的解析方式SAX/DOM4J/PULL及区别,JSON解析的用法

八、cookie/session

  • 数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上。
  • 安全程度不同:cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
  • 性能使用程度不同:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  • 数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值