[java]java基础总结一

原创
2018/09/12 18:25
阅读数 1

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来实现,能提高检索
能力,但对增删改的性能有影响。
--------------------------------------------------------------------------------

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部