一、java基础
1、JDK和JRE的区别?
JDK是java的开发环境,JRE是java的运行环境,即编写java程序就一定需要JDK,只是运行java程序只要JRE就足够了。
2、java中==和equals区别
==在值类型和引用类型不一样,值类型==比较两个值是否相同,引用类型==比较两个引用是否相同;equals比较的都是两个值是否相同。
equals最初的本质是==,引用类型比较的是两个引用,而如String引用是将equals方法进行了重新,而导致比较的是两个值。
3、hashcode和equals
如果两个对象的hashcode相同,equals不一定相同;
如果两个对象的equals相同,hashcode一定相同。
4、final java中的作用
final修改的类不可以被继承;
final修饰的方法不可以被重写;
final修饰的变量是常量,不可以被修改。
5、java中round()方法
Math.round()是向上舍入,3.5舍入为4,-3.5舍入为-3;
6、String数据类型
String不是基本数据类型,基本数据类型包括:byte、int、short、long、float、double、char、boolean
7、java中的字符串操作
String、StringBuilder、StringBuffer,String修饰不变字符串对象,StringBuilder和StringStringBuffer修饰可变字符串;
StringBuffer多线程安全,StringBuider非线程安全,多线程使用StringBuffer,单线程使用StringBuilder。
8、String str="abc"和String str1=new String("abc")的区别
str变量存放在变量池中,str2存放在堆中,引用类型
9、java实现字符串的反转
使用StringBuilder和StringBuffer的的reverse()函数
10、抽象类和抽象方法以及普通类
抽象类中可以没有抽象方法
普通类中不能包含抽象方法,抽象类中可以包含抽象方法
抽象类不能被实例化,普通类可以被实例化
11、抽象类能否使用final修饰符
抽象类不能使用final修饰,因为抽象类就是为了其他类继承的,而final修饰的类不可以被继承
12、接口和抽象类的区别
抽象类使用extends进行继承,而接口使用implements实现接口;
一个类可以实现多个接口,而只能继承一个抽象类;
抽象类可以有构造函数,但接口不能有构造函数,并且抽象类可以有main函数,而接口不能有。
13、java中IO流
分为字节流和字符流,字节流按8位传输以字节为单位输入输出数据,字符流按16位传输以字符为单位输入输出数据。
14、BIO、NIO、AIO的区别
BIO同步阻塞式IO,简单方便,并发能力低;
NIO同步非阻塞式IO,客户端和服务端通过通道通信,实现了多路复用;
AIO异步非阻塞IO,基于事件和回调机制。