黑马程序员技术交流社区
标题:
JAVA总结
[打印本页]
作者:
哔哩哔哩
时间:
2015-4-27 00:44
标题:
JAVA总结
本帖最后由 哔哩哔哩 于 2015-5-13 00:37 编辑
2015-05-01
1、构造方法可以添加返回值类型,不过有了返回值就变成了普通方法,而不是构造方法了
2、构造代码块可以放在构造方法下边,但是先于构造方法执行,非静态变量和构造代码块按顺序执行
3、类的信息、静态变量、方法都存储在方法区,对象被销毁,方法并不会被销毁,只有当类被类加载器卸载,类被回收后,他们才会被回收
4、随机出1-100之间的一个数,如果用Math.random(),要先对Math.random()生成的数强转成int类型,再进行+1操作,这样可以保证每个数随机出来的概率相等
2015-05-08
1、JDK1.8局部内部类可以访问final修饰的局部变量了,但是不管是在该方法中还是该内部类中都不可以改变其值(前提条件是内部类中使用了局部变量),如果内部类中没有使用局部变量,方法中是可以改变其值的
2、私有属性可以在本类中访问,即便是同一个类的不同对象也可以直接访问属性,不需要调用get方法
3、string的indexOf(string str,int fromIndex)方法即使fromIndex超过了字符串的总长度,也不会报错,因为方法里边做了处理4、静态方法可以直接新建成员非静态内部类的对象,即使内部类的构造方法是private修饰,也可以创建对象。
2015-05-12
1、异常 : ConcurrentModificationException -- 并发修改异常
面试题:
产生环境:通过普通迭代器遍历集合的时候,又通过集合改变了集合的结构。这个时候就报出此异常。
因为迭代器是通过集合获取的,集合改变了,但是迭代器没有。
解决方法:
(1)、使用普通for循环,这时候元素添加到集合的末尾。
(2)、使用ListIterator遍历,并且使用该迭代器的add()方法添加元素。这时,元素添加到匹配的那个元素后面
2、当很大数据量时(比如1W),在LinkedList前部和后部进行删除插入操作,速度会很快,但是如果是在中部进行操作,结果就不那么乐观了,性能甚至不及ArrayList;遍历LinkedList必须使用iterator不能使用for循环,因为每次for循环体内通过get(i)取得某一元素时都需要对list重新进行遍历,性能消耗极大。
3、HashSet是按照哈希值和equals方法判断是否重复的,并且按照哈希算法来判断元素的位置,用哈希值来保证数据的唯一性;TreeSet需要自己实现Comparator或Comparable自定义排序,以此来保证数据的唯一性。
4、HashSet和TreeSet存储元素时,如果元素重复,则不进行存储操作,并不会覆盖原先已存在的元素(注意:二叉树算法是覆盖重复的元素)。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2