您的位置:首页 > 编程语言 > Java开发

javase复习整理(一):基础要点、重点、易错点、多线程梳理总结

2017-05-03 11:58 676 查看
最近抽出时间从新回头复习了一下javase基础,把自己以前理解的不透彻和易错的知识点重新梳理了一下,便于以后查阅。那么接下来就开始复习总结!

一、java语言基础

1、在java中,逻辑运算符“&&”与“&”都表示“逻辑与”,那么他们的区别在哪里呢?

当两个表达式都为true时,逻辑与的结果才为true,使用逻辑运算符“&”会判断两个表达式;而逻辑运算符“&&”则是针对boolean类型进行判断,当第一个表达式为false时则不会去判断第二个表达式,直接输出结果。使用“&&”可以节省计算机判断的次数。通常将这种在逻辑表达式中从左端的表达式可以推断出整个表达式的值称为“短路”,而那种始终执行逻辑运算符两边的表达式称为“非短路”。“&&”属与“短路”运算符,而“&”则属于“非短路”运算符。“||”和“|”也是如此。

2、String类型不是java的基本数据类型。

3、switch语句中表达式的值必须是byte,short,int,char,枚举类型,case 后所跟的常量值也必须是byte,short,int,char,枚举类型,java7以后允许String类型。同一个switch语句,case的常量值必须互不相同。

4、如果在程序中频繁的附加字符串,建议使用StringBuilder。StringBuilder比String更节省时间。

5、StringBuilder是一个可变的字符串序列,提供一个与StringBuffer类兼容的API,但并不保证与之同步。该类是Stringbuffer类的建议替换,在字符串缓存中被单个线程使用要比StringBuffer类快。但是StringBuilder的实例用于多个线程是不安全的,这时就要使用StringBuffer类来实现。

6、如果一个类的成员变量或成员方法被private修饰,则该成员变量只能在本类中使用,在子类中是不可见的,并且对其他包的类也是不可见的。

7、对象引用超过其作用范围、对象被赋值为null时,对象会被java虚拟机视为垃圾。

8、java语言创建的对象是保存在堆中的,为了提高查找的速度使用了散列查找。

9、ArrayList实现了可变的数组,,可以跟均索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢

10、LinkedList采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,经常需要向集合中插入、删除对象时,使用LinkedList类实现的List集合的效率较高。

11、Set集合中的对象是无序的,遍历Set集合的结果与插入Set集合的顺序并不相同。

12、Map接口常用的实现类有HashMap和TreeMap。通常建议使用HashMap实现类实现Map集合,因为由HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象存在一定的顺序,硬广告使用TreeMap类实现Map集合。

13、由于TreeMap类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null。

14、异常类的使用原则:①不要过多的使用异常,这样会增加系统的负担 ②在方法中使用try...cathc语句块捕获异常时,要对异常作出处理。 ③try...catch语句块的范围不要太大,这样不利于对异常的分析 ④一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或子异常

15、调用sleep()方法的线程不释放锁,但调用wait()方法的线程释放锁。

16、wait(time)方法指在此时间之内暂停,而wait()方法会使线程永久无限的等待下去,需要使用notify()或者notifyAll()方法唤醒。

17、wait()与notify()、notifyAll()方法只能在同步块或同步方法中使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java se 语言