【JavaSE】Java(五十二):核心要点总结

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。【JavaSE】Java(五十二):核心要点总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在这里插入图片描述

1. java中普通类和抽象类有哪些区别

Java中普通类(也就是非抽象类)和抽象类有以下几个区别

实例化:普通类可以直接被实例化为对象,而抽象类不能直接被实例化。抽象类需要被继承后,由其子类来实现其中定义的抽象方法。

抽象方法:普通类不能包含抽象方法,而抽象类必须至少包含一个抽象方法。抽象方法是一种没有具体实现的方法,它只有声明而没有方法体。抽象方法必须在抽象类的子类中被实现。

成员变量:普通类和抽象类都可以定义成员变量,并可进行初始化赋值。但是,抽象类中的成员变量不能强制要求其子类进行初始化或赋值,因为抽象类并不强制要求其子类实现所有的方法。

扩展性:普通类和抽象类都可以被其他类继承,从而获得这些类的属性和方法。但是,由于普通类已经对所有方法进行了实现,所以它的子类只能继承它的方法。而抽象类中的抽象方法要求子类必须先实现这些抽象方法,这样可以确保子类在继承抽象类的基础上完成具体的功能实现,扩展性更强。

使用场景:由于抽象类本身不能被实例化和使用,它通常用来定义一些基础的类或方法,以供其他的普通类或子类继承和实现。而对于那些可以直接被实例化的类,我们通常会把它们定义成普通类。

综上:抽象类是一种含有抽象方法的类,需要被继承后在其子类中实现,而普通类则没有这个限制。抽象类通常用于定义一些基础类或方法,而普通类适用于所有的其他情况。

2. 接口和抽象类有什么区别

Java中的接口和抽象类是两种常见的抽象类型,它们有以下几个区别:

实现方式:抽象类是通过关键字abstract来定义的,而接口是通过interface来定义的。

可继承性:抽象类可以被其他类继承,以获得它的属性和方法,然后在子类中进行具体实现。而接口只能被其他类实现,并且一个类可以同时实现多个接口,这样就可以在其中定义不同的行为。

抽象方法:抽象类可以包含抽象方法和非抽象方法,而接口中只能包含抽象方法。另外,抽象方法是一种没有实现的方法,需要由子类在继承时进行实现;而接口的所有方法都是抽象的,需要被实现类进行具体实现。

方法默认实现:Java8开始,接口可以包含默认方法,可以提供默认的方法实现,而抽象类不能直接提供默认方法实现。这也使得接口比以前更加灵活和易用。

程序设计方向:抽象类通常用于表示某个类或接口的基础层次结构,而接口则通常用于定义不同类之间的共同行为。简单来说,抽象类是从类的角度考虑问题,而接口则是从行为的角度考虑问题。

抽象类和接口都可以用于定义抽象类型,但两者有不同的使用场景。你可以根据实际需求来选择使用哪一种或哪些。

3. java中的IO流分为几种

Java中的IO流可以分为四类:

字节流(InputStream和OutputStream):用于读写一个字节或一组字节。InputStream是输入字节流的抽象基类,OutputStream是输出字节流的抽象基类。

字符流(Reader和Writer):用于读写一个字符或一组字符。Reader是输入字符流的抽象基类,Writer是输出字符流的抽象基类。

字节缓冲流(BufferedInputStream和BufferedOutputStream):它们是字节流和字符流的缓冲流,可以提高性能,减少系统的 read() 和 write() 的调用次数。

对象流(ObjectInputStream和ObjectOutputStream):用于将对象序列化和反序列化过程写入和读取到流中。

以上称为“节点流”,而由这些节点流得到的称为“处理流”或“过滤流”。处理流包括:BufferedInputStream、BufferedOutputStream、DataInputStream、DataOutputStream、ObjectInputStream、ObjectOutputStream、PrintStream、PrintWriter等。

这些IO流可以按照不同的数据类型进行分类,方便读取和处理数据,同时也有助于程序的性能优化。在实际开发中,我们需要根据具体的需求来选择使用哪种类型的IO流。

4. BIO、NIO、AIO 有谁没区别

BIO(Blocking I/O):同步阻塞I/O模型,它采用传统的InputStream/OutputStream进行读写操作。当一个线程在进行输入/输出时,其他线程必须等待。因此BIO通常无法支持高并发的场景。

NIO(Non-Blocking I/O):同步非阻塞I/O模型,它引入了Channel、Buffer、Selector等新的抽象概念,使用读写缓冲区(Buffer)完成对数据的读写操作。因为NIO利用单独的线程处理事件通知,所以可以支持更高的并发量。

AIO(Asynchronous I/O):异步非阻塞I/O模型,一般通过回调来实现异步处理。与NIO的主要区别在于, 读写操作完成后,内核会自动将数据写到应用的缓冲区中,不需要用户再次调用read/write处理。这使得AIO适合大量文件的处理以及高负载的服务器应用开发。

BIO适用于客户端连接比较小的情况;NIO适合处理较少的连接,但每个连接要处理大量任务或面临高并发;AIO则适用于同时有很多连接的高并发网络应用。根据实际需求选择不同的I/O模型,可以有效提高应用程序的性能。

5. Files 的常用方法有哪些

创建、删除文件或目录:createDirectory(Path path)、createDirectories(Path path)、createFile(Path path)、delete(Path path)、deleteIfExists(Path path)。

文件或目录复制、移动:copy(Path source, Path target, CopyOption… options)、move(Path source, Path target, CopyOption… options)。

获取文件属性:isDirectory(Path path)、isRegularFile(Path path)、isHidden(Path path)、size(Path path)、getLastModifiedTime(Path path)、isReadable(Path path)、isWritable(Path path)、isExecutable(Path path) 等。

获取目录或文件下的所有文件名列表:list(Path dir)、walk(Path path)、newDirectoryStream(Path dir)等。

读取或写入文件内容:readAllBytes(Path path)、readAllLines(Path path), write(Path path, byte[] bytes, OpenOption… options)、writeString(Path path, CharSequence charSequence, Charset cs, OpenOption… options) 等。

文件或目录比较:isEqual(Path path1, Path path2)。

更改文件权限:setOwner(Path path, UserPrincipal owner)、setPosixFilePermissions(Path path, Set perms)等

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162162.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!