[java]java基础总结一

1.浅拷贝和深拷贝 
浅拷贝是指向用一个引用地址,是对象相等;深拷贝是指向两个引用地址,是两个对象不等
clone是Object类的方法,但使用clone方法是时要先实现Clonable接口
---------------------------------------------------------------------------
2.hashCode()和equals()
两个元素的hashCode()相同,equals()不必定相同;
可是,两个元素的equals()相同,hashCode()必定相同;
例子:
HashSet集合继承了Set集合,具备元素不重复性的特色,假如HashSet集合已经有
1000个元素了,再插入第1001个元素时,用hashCode()方法来作比较,判断元素
是否已存在HashSet集合集合中,能够提升效率;而不是逐一元素作比较。
----------------------------------------------------------------------------
3.String中的问题:
String直接赋值时,会先去常量区找有无相同的字符串,有的话,就直接引用,无的
话,开辟新空间,而且驻留在常量区;
new的话,则直接开辟新的内存空间;
----------------------------------------------------------------------------
4.重载和重写:
重载是不一样类;重写是父子类;
不能根据返回值类型来肯定是否重载:由于编译器不知道要返回的是哪个方法。
----------------------------------------------------------------------------
5.+和StringBuilder中的append()的区别:
+操做其实是转成append()操做;
在没有循环的状况下,+和append()操做性能差很少;
可是,当在循环中进行+操做时,会由于循环内每次都new StringBulider()对象,
来进行append()操做,因此+性能会下降。
不能+和append()混合用,性能低;
-------------------------------------------------------------------------------
6.实现对象克隆:
方法一:实现CloneAble接口,使用Object中的clone()方法,浅克隆(不推荐)
方法二:实现Serializable接口,利用序列化和反序列化来实现克隆,深克隆(推荐)
由于实现Serializable接口,能够在编译时利用泛型来检查异常,早早地暴露问题。数据库

---------------------------------------------------------------------------------
7.StringBuilder和StringBuffer的区别:
StringBuilder是线程不安全,但执行速度快;
StringBuffer是线程安全,但执行速度慢;
通常来讲,推荐用StringBuilder,当须要线程安全时,可用用Collections工具类
的同步方法
-------------------------------------------------------------------------------
8.Collection下有哪些子类:
Collection下的子类主要有:
List:ArrayList(数组实现);LinkedList(队列);vector(数组实现;线程安全)
Set:HashSet(无序,基于HashMap实现);LinkedHashSet(有序)
--------------------------------------------------------------------------------
9.数据库索引:
索引的原理就是将无序的数据变成有序的排序,利用BTree来实现,能提升检索
能力,但对增删改的性能有影响。
--------------------------------------------------------------------------------数组

相关文章
相关标签/搜索