Java知识要点整理(待补充)
2019-07-28 本文已影响0人
HamletSunS
- 面向对象的特征
封装:
继承:
多态:
抽象:
- 简单阐述各个概念并举例,注意多态的2个种类和条件
- String是基本的数据类型吗?
不是,是对象,基本类型有8种。整型4种+字符型1种+浮点型2种+布尔型1种
- 整型中的byte类型不要忽略
- int和Integer的区别
int是基本类型,是一个32位4字节长度的整数
Integer是类类型,是int的封装类
int和Integer之间可以通过自动装箱、自动拆箱互相转换
- 封装类、自动装箱、自动拆箱的概念,可以从自动转换类型的角度去阐述和理解
- String和StringBuffer的区别
String是immutable(不可变)的,内容一旦创建好就不能再改变,比如长度和内容。而StringBuffer是可变的,长度和内容都可以改变。
为什么StringBuffer可变?因为其内部是采用字符数组的形式存放的字符串。如果长度变长,可以创建一个新的数组,并把原内容复制到新数组,实现长度的改变。
能不能自己实现一个StringBuffer? (待补充)
- 抓住StringBuffer的内部原理,可变性的原因是因为它的内部是一个字符数组
- 运行时异常和一般异常的区别
运行时异常又称为非可查异常,编译过程中不要求显示捕捉
一般异常又称为可查异常,编译过程中要求程序必须进行处理,要么捕捉,要么throws抛出
- 注意Java程序编译过程中对这2种异常的要求
- 说出ArrayList,Vector, LinkedList的区别和特性
三者均实现了List接口,LinkedList还实现了Deque接口
ArrayList,Vector内部是通过数组实现的,二者均继承自AbstractList抽象类,其中前者是非线程安全的,后者线程安全。
LinkedList内部是通过链表来实现的。
区别就是链表和数组的区别:
1.随机访问和定位数组优
2.插入和删除链表优
线程安全和非安全是指什么?(待补充)
- 明确三者实现的接口,继承的类,内部实现所采用的数据结构
- abstract是否可以和static或者和synchronized同时使用?
不可以,因为abstract方法只有声明没有实现,目的是被子类重写,而static方法不能被子类重写,所以不行;同理,因为该方法只有声明没有实现,也没有被线程同步的意义,所以不能被synchronized修饰。当子类实现该方法后则可以在子类中加上同步修饰符
8.switch是否能用在long 上?
不行,只能用在byte、short、int、String、enum这5种类型上。
enum的使用,除了正常的类的定义外,还可以直接用不加任何修饰符的字母代表枚举变量,通常是为了用于switch语句。另外枚举类不能通过new方法实例化对象,但可以通过枚举变量去指向引用
9.Set是如何判断Java中的两个对象是否重复?
先比较hashcode值
- 若不一样,则不重复
- 一样,再调用equals方法,再一样,则重复,否则不重复
(待补充)