Java基础部分面试题
JDK和JRE有什么区别?
JDK是Java开发工具包, JRE是Java运行环境。
==和equals有什么区别?
两个对象的hashcode()相同,则equals()也一定为true,对吗,为什么?
不对。
如果没有重写equals()方法,使用的就是Object类中的equals()方法,返回内存编码.
在集合中,比如HashSet中,要求放入的对象不能重复,怎么判定呢?
首先会调用hashcode,如果hashcode相等,则继续调用equals,也相等,则认为重复。
如果重写equals后,如果不重写hashcode,则hashcode就是继承自Object的,返回内存编码,这时候可能出现equals相等,而hashcode不等,你的对象使用集合时,就会等不到正确的结果
final在Java中有什么作用?
定义类:不可继承。定义方法:不可重写。定义属性:值不可改变,定义之初就要赋值。
Java中的math.round(-1.5)等于多少?
-1。round()的结果会四舍五入,-1.5四舍五入后是-1。
String属于基础的数据类型吗?
不属于,String是一个类,八个基本数据类型是关键字
Java中操作字符串都有哪些类?他们之间有什么区别?
String, StringBuffer, StringBuilder
String str = “i”与String str=new String(“i”)一样吗?
不一样 前者Java虚拟机会分配到内存空间中,后者会分配到堆内存中新开辟一块空间。
如何将字符串反转?
StringBuffer或StringBuilder的reverse()方法。
String类的常用方法有哪些?
lenth(), isEmpty(), replaceAll(), split(), trim(), toString()
抽象类必须要有抽象方法吗?
不是,抽象类可以有构造方法或普通方法。
普通类和抽象类有哪些区别?
普通类可以被实例化, 抽象类可以定义抽象方法,使用抽象类方便代码的复用。
抽象类的子类必须实现抽象类中所有的抽象方法,否则这个子类也是抽象类。
抽象类能使用final修饰吗?
不能。抽象类必须被继承,而使用final关键字后不能被继承,是冲突的。
接口和抽象类有什么区别?
接口更多的是在系统架构设计方法中发挥作用,更像是一种规范,而抽象类在代码实现方面发挥作用,方便代码的重用。
抽象类中可以实现方法,接口中只能有抽象方法。
Java中IO流分为几种?
inputStream字节输入流,outputStream字节输出流,Writer字符输出流,Reader字符输入流
按数据流向:输入流和输出流
按处理单位:字节流和字符流(JDK中Stream后缀的是字节流,Reader或Writer后缀的是字符流)
根据功能:节点流和处理流
BIO、NIO、AIO、有什么区别?
- BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
- NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
- AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的 IO 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理。
Files的常用方法有哪些?
- Files.exists() 检测文件路径是否存在
- Files.createFile()创建文件
- Files.createDirectory()创建文件夹
- Files.delete() 删除文件或者目录
- Files.copy() 复制文件
- Files.move() 移动文件
- Files.size()查看文件个数
- Files.read() 读取文件
- Files.write()写入文件