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

news2024/11/23 20:12:38

文章目录

  • 1. java中普通类和抽象类有哪些区别
  • 2. 接口和抽象类有什么区别
  • 3. java中的IO流分为几种
  • 4. BIO、NIO、AIO 有谁没区别
  • 5. Files 的常用方法有哪些


在这里插入图片描述

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)等



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/617836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何算圆的面积

Python如何算圆的面积 在数学中,一个圆的面积通过以下公式计算:S πr,其中S是圆的面积,r是圆的半径,π是一个常数,约等于3.14。 Python是一种用于编写高级程序的解释型编程语言。作为一种动态语言&#…

chatgpt赋能python:Python如何自动换行

Python如何自动换行 在Python编程中,有时候我们需要输出很长的文本或字符串,这时候就需要自动换行的功能。本文将介绍Python中实现自动换行的几种方法。 方法一:使用字符拼接 在Python中,我们可以使用"“来拼接字符串。如…

chatgpt赋能python:Python如何更改目录

Python如何更改目录 介绍 Python作为一门通用编程语言,提供了许多用于操作计算机文件系统的方法,其中就包括更改目录的方法。更改目录可以让我们在不离开当前脚本的情况下,改变当前脚本操作文件的位置,使我们更容易管理和访问所…

Leetcode刷题笔记--Hot01-10

1--两数之和 讲解参考:LeetCode 最热门 100 题 主要思路: 对数组进行从小到大的排序,使用两个指针指向第一个元素和最后一个元素,即左指针指向第一个元素A[l],右指针指向最后一个元素A[R]; 判断两个指针当前…

Threejs进阶之十七:Threejs中的Path、Shape和ShapeGeometry类

在实际的应用中,有时候需要我们根据一个二维图形拉伸为三维图形的情况,这就需要我们对Threejs中提供的二维图形相关的类有一个深入的了解,这一节我们就深入的聊一聊Threejs中的Path、Shape和ShapeGeometry类 目录 Path类构造函数常用属性常用…

chatgpt赋能python:Python字符串跨行:如何在代码中处理长字符串

Python字符串跨行:如何在代码中处理长字符串 当你编写Python代码时,可能会遇到需要编写很长的字符串的情况。例如,你可能需要将一大段文本或HTML代码嵌入到Python程序中。在这种情况下,你需要学会如何将长字符串跨行编写&#xf…

[chatGPT攻略] 如何检测文本内容是否由ChatGPT生成 ?

[chatGPT攻略] 如何检测文本内容是否由ChatGPT生成 ? 在 ChatGPT 爆火的两个月内,学生就已经自发用这种工具做作业、写论文偷懒,编剧会用它编故事试试出乎人意料的故事走向,文案编辑用它来给自己打工。 在用工具给自己省事这件事上&#xf…

无条件抽奖和条件抽奖(互动功能发起端JS-SDK)

无条件抽奖功能概述 允许开始前对抽奖进行奖品、中奖人数、中奖人员等设置,完成设置后可以开始抽奖。 本功能只支持讲师、嘉宾、助教、管理员这四种角色进行抽奖的发起和停止。支持自定义设置中奖用户信息采集字段。支持设置预设中奖用户。支持设置定时开奖可查看…

论文翻译——Test Selection for Deep Learning Systems

文章目录 AbstractIntroductionRelated work(这部分没有翻译完全,我主要是用来做课程回报的,后面的实验就够讲了,这里就不讲了)3 Motivation and Problem Definition4 Test Selection MetricsMetrics Derived from the…

C++与Qt深度融合:高效设计多线程应用框架

C与Qt深度融合:高效设计多线程应用框架 1. C与Qt线程的混合使用1.1 C线程与Qt线程的基本概念1.2 线程间的相互依赖关系1.3 设计合理的代码框架 二、深入理解C和Qt线程模型2.1 C线程模型2.2 Qt线程模型2.3 C和Qt线程模型的比较 三、C和Qt线程间的互操作性3.1 std::th…

chatgpt赋能python:Python如何获取微信聊天记录

Python如何获取微信聊天记录 作为世界上最受欢迎的即时通讯工具之一,微信被大量用户使用。然而,微信聊天记录的备份和管理是一个重要的问题,特别是对于那些需要在工作和个人生活中快速查找重要信息的人来说。 幸运的是,Python编…

Cloud篇——GateWay 网关

1、GateWay是什么 官网讲解: SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 SpringCloud Gate…

READ-自动驾驶大场景神经渲染

这是一个针对自动驾驶场景的神经渲染方案,提出了一种大规模神经渲染方法来合成自动驾驶场景(READ),这使得通过各种采样方案在PC上合成大规模驾驶场景成为可能。 疑问:文中提到基于nerf的方法和神经渲染方法&#xff0…

kali 2023.2安装、换源、更新、SSH

kali2023版本已经更新了,为了体验新版,下载试用了一下。记录初始的安装过程,以备复习用,不足之处欢迎批评指正。 一、下载 1、官网下载,地址:https://www.kali.org/,因为我准备在VM虚拟机中使用…

chatgpt赋能python:Python如何抓取数据

Python如何抓取数据 介绍 Python是一种功能强大的编程语言,它被广泛使用于网络抓取和数据分析。无论您是想要从网站上抓取数据,还是使用API抓取数据,Python都是一种非常适合的工具。在本文中,我们将介绍Python如何抓取数据&…

WINDOWS权限维持

Meterpreter权限维持 meterpreter中的权限维持技术有两种: persistence(注册表后门)metsvc的后门(服务后门) 1、注册表后门 windows/local/persistence 这个方法是执行vbs脚本,这里很容易被杀软拦截&a…

Android 12.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

1.前言 在android12.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析…

MySQL数据库 12:约束

约束: 在MySQL中,约束是一种限制数据表中列值的规定。保证数据库中的数据正确,有效性和完整性。MySQL中的约束有以下几种: 1. 主键约束(Primary Key Constraint):主键是用于唯一标识表中每行记…

浅谈Servlet、HTTP

一、Servlet Servlet 是Java Web 开发的规范。任何一个mvc的框架都是servlet发展来的。SpringMVC使用DispatcherServlet拦截所有API请求,自定义注解进行URL匹配。 Servlet层次结构 Setvlet生命周期 1、工作流程 1.Web Client 向Servlet容器(Tomcat&…

Java 实现更新顺序表中的指定元素

一、思路 1.定义一个 pos 变量为要更新的位置,定义一个 value 变量为更新后的数值. 2.顺序表不能是空的,就肯定不可以更新元素. 3.pos位置要合法,要保证 pos 位置是处在顺序表范围内的. 4.更新功能不需要考虑扩容,因为不涉及到元素…