1.JDK 和 JRE 有什么区别?
JRE是java的运行环境,JDK是java开发工具包
2.== 和 equals 的区别是什么?
==对于基本类型是对值的比较,对于引用类型来说是比较值的引用,equals是对 值的比较
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不一定,hashCode(方法)是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值,equals()是Object中的方法,默认返回==的比较值,但是两个方法都是可以可以被重写的
4.final 在 java 中有什么作用?
final可以修饰类,方法,变量final修饰的类不可以被继承,final修饰的方法不可以被重写,final修饰的变量不可以重新赋值
5.java 中的 Math.round(-1.5) 等于多少?
Math.round(-1.5) = -1
6.String 属于基础的数据类型吗?
八大基础类型 int short byte charlong double float boolean, String不属于基础类型
7.java 中操作字符串都有哪些类?它们之间有什么区别?
String,StringBuffer,StringBuilder
String是不可变的对象,每一次对String的修改都是一次新的创建
StringBuffer是可改变对象的,线程安全,可用于多线程
StringBulider是可改变对象的,非线程安全,用于单线程
操作效率 StringBuilder > StringBuffer > String
8.String str="i"与 String str=new String("i")一样吗?
不一样, String str = "i"是创建了一个对象
String str = new String("i")是创建了两个对象
String是final类型的,i放在常量池中,new String是对象,放在堆内存中
9.如何将字符串反转?
StringBuilder.reverse()或StringBuffer.reverse()
10.String 类的常用方法都有那些?
length(), //计算字符串长度
charAt(), //截取字符串
subString(), //获取字符串的子串
compareTo(), //比较字符串
indexOf(), //查找子串在字符串中的位置
toLowerCase(), //转换成小写
toUpperCase(), //转换成大写
trim(), //去首尾空格
split(), //将字符串分割成字符串数组
valueOf(), //基本类型转换成字符串
replace()
11.抽象类必须要有抽象方法吗?
不必须
12.普通类和抽象类有哪些区别?
抽象类必须有关键字abstract来修饰
抽象类可以不包含抽象方法
如果一个类包含抽象方法,则该类必须是抽象类
13.抽象类能使用 final 修饰吗?
不能,抽象类是用来继承的,final修饰的类无法继承,方法无法重写
14.接口和抽象类有什么区别?
接口需要实现,抽象类需要继承
接口只能做方法声明, 抽象类可以做方法声明,也可以做方法实现
接口里定义的变量是公共的静态变量, 抽象类中的变量是普通的变量
接口是设计的结果,抽象类是重构的结果
15.java 中 IO 流分为几种?
按照流的流向分为输入流跟输出流
按照操作单元划分分为字节流跟字符流
按照流的角色分为节点流和处理流
16.BIO、NIO、AIO 有什么区别?
BIO(Blocking I/O):同步阻塞I/O模式, 数据的读取必须阻塞在一个线程里完成
NIO(New Blocking):同步非阻塞I/O模式, 适用于高负载高并发的网络应用
AIO(Asynchromous I/O):升级版的NIO
17.Files的常用方法都有哪些?
exists() //检查文件路径是否存在
createFile() //创建文件
createDirectory() //创建文件夹
delete() //删除文件或目录
copy() //复制文件
move() //移动文件
size() //查看文件个数
read() //读取文件
write() //写入文件