1.Java的基本数据类型有哪些?(了解)
整型: byte , short , int , long
浮点型: float, double.
布尔型: booleam
字符型: char
2.JVM JRE JDK 的区别 (必会)
JVM: java虚拟机,加载class文件,解释给操作系统执行的(不提供单独下载)
JRE: java运行时环境(JVA+系统类库,提供客户使用)
JDK: java开发环境(JRE+开发工具)
3.重载和重写的区别(必会)
方法重载 发生在同一个类中,如果功能相似,可以命名相同的方法名;
条件一:方法名相同;
条件二:在同一个类中;
条件三:形参参数列表不同; PS: 和返回值类型无关
方法重写: 发生在父子类中,
方法名.参数列表必须相同,返回值范围小于等于父类,抛出的异 常范围小于等于父类,
访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。
4.String、StringBuffer、StringBuilder三者之间的区别(必会)(javase进阶)
三者底层都是byte[ ]数组,而只有String 是final修饰的,是不可变的,
所以在字符串的拼接中String是通过创建新的对象进行(假) 拼接,旧对象失去引用后被垃圾回收器回收,String频繁的创建回收(效率低)而后者是直接改对象里面的内容。
1、StringBuffer/StringBuilder
可变长度字符串,在原长度上追加,适合字符串的频繁拼接:
2、StringBuffer/StringBuilder初始化容量16.
如何优化StringBuffer的性能?
在创建的时候尽可能的给定一个合理的初始化容量,减少底层数组的扩容次数(效率高)
3、StringBuffer是线程安全的。StringBuilder是非线程安全的。
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据用 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据用 StringBuilder。
5.接口和抽象类的区别是什么?(必会)
实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
构造函数:抽象类可以有构造函数;接口不能有。
main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。
实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符