一、String,StringBuffer,和StringBuilder区别
String字符常量,每次修改都相当于生成一个新对象,不适应经常变更值的场景
StringBuffer字符变量,线程安全,适用于多线程,效率略低于StringBuilder
StringBuilder字符变量,线程不安全,适用于单线程,效率略高于StringBuffer
效率 StringBuilder > StringBuffer > String
二、arraylist和linkedlist区别
ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。
LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间
三、MVP架构
Model:实体层,用于实现具体的复杂的逻辑。
View:视图层,用于展示数据、与用户交互等
Presenter:逻辑控制层,用于持有Model和View的实例。
特点:view层和model层完全隔离,presenter持有Model和View,在View中使用presenter实现功能
优点:释放activity功能,完全充当View的角色,解耦合,换UI时方便,结构更清晰,责任更明确,便于维护
缺点:1、类和接口过多,解决办法:写一个Contract接口,然后把与Mvp三层相关接口都写进去。
2、容易造成内存泄漏,presenter持有View,activity关闭时presenter在执行耗时操作时容易造成view无法回收,造成内存泄漏。解决办法:ondestroy时回收presenter,或者使用弱引用。
网友评论