抽象类 final修饰 IO流 BIO,NIO,AIO区别和files常用方法类别

11.抽象类必须要有抽象方法吗?
答:
抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。
1、抽象类必须有关键字abstract来修饰。
2、抽象类可以不含有抽象方法。
3、如果一个类包含抽象方法,则该类必须是抽象类。

12.普通类和抽象类有哪些区别?
答:
普通类可以实例化,抽象类不能实例化;
普通类和抽象类都能被继承,但是抽象类被继承以后一般需要子类重写抽象类中继承下来的方法
13.抽象类能使用 final 修饰吗?
答:final修饰的类不能被继承,没有子类。如果类中有抽象的方法也是没有意义的
abstract类为抽象类。即该类只关心子类具有的功能,而不是功能的具体实现。如果用final修饰方法,那么该方法则不能再被重写。
final是不能修饰abstract所修饰的方法的
14.接口和抽象类有什么区别?
答:定义不同:
1、接口
接口是把隐式的公共方法和属性组合起来,封装成特定功能的一个集合。
2、抽象类
从子类中发现了公共的东西,泛化出父类,然后子类继承父类,考虑把实例化没有任何意义的父类定义为抽象类。
用法不同:
1、接口
(1)接口用于规范,抽象类用于共性。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。
(2)接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。
(3)此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
15.java 中 IO 流分为几种?
答:
按照流的流向分,可以分为输入流和输出流
按照操作单元划分,可以划分为字节流和字符流
按照流的角色划分,可以划分为节点流和处理流
InputStream/Reader:所有输入流的基类,前者是字节输入流,后者是字符输入流
OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流
字符流和字节流的区别?、
答:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节
处理对象不同:字节流能处理所有类型的数据如图片,avi等(),而字符流只能处理字符类型的数据
16.BIO、NIO、AIO 有什么区别?
答:
bio:线程发起IO请求,不管内核是否准备好IO操作,从发起请求时,线程一直阻塞,直到操作完成
nio:线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作
,线程开始阻塞,直到操作完成
aio:线程发起IO请求,立即返回;内存做好IO操作的准备之后,做IO操作,直到操作完成或失败,
通过调用注册的回调函数通知线程做IO操作完成或者失败。
BIO是一个连接一个线程 同步并阻塞 适用场景分析:、
BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
NIO是一个请求一个线程 同步非阻塞 适用场景分析:
NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
AIO是一个有效请求一个线程 异步非阻塞 适用场景分析:
AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。
17.Files的常用方法都有哪些?
答:
Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
File对象代表磁盘中实际存在的文件和目录
一常用方法:

1.Files.copy():复制文件
2.Files.move()移动文件夹
3.Files.size()查看文件个数
4.Files.read()读取文件
5.Files.write()写入文件
二创建:
1.createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。
2.createDirectory():创建文件夹
3.mkdir() 在指定位置创建一个单级文件夹。
4.mkdirs() 在指定位置创建一个多级文件夹。
5.renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么 renameTo的作用是重命名,
如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。
三,删除:
1.delete() 删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
2.deleteOnExit()jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。
四,判断:
1.exists() 文件或文件夹是否存在。
2.isFile() 是否是一个文件,如果不存在,则始终为false。
3.isDirectory() 是否是一个目录,如果不存在,则始终为false。
4.isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
5.isAbsolute() 测试此抽象路径名是否为绝对路径名。
五,获取:
1.getName() 获取文件或文件夹的名称,不包含上级路径。
2.getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
3.length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
4.getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
5.lastModified()获取最后一次被修改的时间。
六,文件夹相关:
1.static File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
list() 返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
2.listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
3.list(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙趣生花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值