java面试题02
11.抽象类必须要有抽象方法吗?
不是,抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类。
12.普通类和抽象类有哪些区别
普通类不可以有抽象方法,抽象类不可以被实例化。
(抽象类有构造函数,但不能直接被调用,当一个普通类继承了抽象类的时候,实例化这个普通类的时候,会调用抽象类的构造函数)
13.抽象类可以用final修饰吗?
抽象类的就是要子类继承然后实现内部方法的。但是final修饰的类是不能再被继承和修改的。所以不能用final修饰。
14.接口和抽象类有什么区别?
- 接口只能做方法声明,而抽象类既能做方法声明也能做方法实现
- 一个类可以继承很多个接口,但只能继承一个抽象方法
- 接口是被类implements实现的,抽象类是被类extends继承的
- 接口里面的常量必须被初始化
- 接口可以被接口继承,抽象类可以被抽象类继承
- 如果一个类不能实现接口里面的所有方法,那么这个类只能是抽象类
15.java中io流分为几种
按功能来分:有 输入流 和 输出流
按类型来分:有字节流和字符流
字节流以8位传输以字节为单位,字符流以16位传输,以字符为单位
16.BIO,NIO,AIO有什么区别
bio:同步阻塞式io,一个连接一个线程
nio:同步非阻塞式io,一个请求一个线程
nio:异步非阻塞式io,一个有效请求一个线程
17.Files的常用方法
- isExecutable:文件是否可以执行
- isSameFile:是否同一个文件或目录
- isReadable:是否可读
- isDirectory:是否为目录
- isHidden:是否隐藏
- isWritable:是否可写
- isRegularFile:是否为普通文件
- getPosixFilePermissions:获取POSIX文件权限,windows系统调用此方法会报错
- setPosixFilePermissions:设置POSIX文件权限
- getOwner:获取文件所属人
- setOwner:设置文件所属人
- createFile:创建文件
- newInputStream:打开新的输入流
- newOutputStream:打开新的输出流
- createDirectory:创建目录,当父目录不存在会报错
- createDirectories:创建目录,当父目录不存在会自动创建
- createTempFile:创建临时文件
- newBufferedReader:打开或创建一个带缓存的字符输入流
- probeContentType:探测文件的内容类型
- list:目录中的文件、文件夹列表
- find:查找文件
- size:文件字节数
- copy:文件复制
- lines:读出文件中的所有行
- move:移动文件位置
- exists:文件是否存在
- walk:遍历所有目录和文件
- write:向一个文件写入字节
- delete:删除文件
- getFileStore:返回文件存储区
- newByteChannel:打开或创建文件,返回一个字节通道来访问文件
- readAllLines:从一个文件读取所有行字符串
- setAttribute:设置文件属性的值
- getAttribute:获取文件属性的值
- newBufferedWriter:打开或创建一个带缓存的字符输出流
- readAllBytes:从一个文件中读取所有字节
- createTempDirectory:在特殊的目录中创建临时目录
- deleteIfExists:如果文件存在删除文件
- notExists:判断文件不存在
- getLastModifiedTime:获取文件最后修改时间属性
- setLastModifiedTime:更新文件最后修改时间属性
- newDirectoryStream:打开目录,返回可迭代该目录下的目录流
- walkFileTree:遍历文件树,可用来递归删除文件等操作
18.java容器有哪些
当然,collection下面还有queue(队列)
19.list,set,map有什么区别
list是一个继承Collection的接口,有序,有索引,元素可以重复。
set:hashSet是一个继承于Collection的接口,无序,无索引,不可重复
treeset:有序,无索引,不能重复
abstractset:无序无索引,不可重复
map:hashmap:无序,key值必须唯一
hashtable:等同于hashmap
treemap:有序。具有唯一的key
20.collection和collections有什么区别
collection是接口,提供了对集合对象操作的一些基本方法。collections是工具类,提供了很多对集合的操作方式,比如排序,二分查找,填充,最大最小。不可以被实例化。本质就是在集合的方法上面加上同步锁。