当前位置: 首页 > news >正文

2024年150道高频Java面试题(十一)

21. 什么是 Java 中的内部类?它有哪些类型?

Java 中的内部类是定义在另一个类内部的类。内部类能够访问其外部类的成员,包括那些声明为私有的成员。内部类是面向对象编程中的一个特色,可以用来逻辑上组织相关的类,并且可以增强封装性。

内部类大致可以分为以下四种类型:

  1. 成员内部类(Member Inner Class):
    成员内部类是最普通的内部类,它像外部类的一个成员一样,可以访问外部类的所有成员变量和方法。即使是声明为private的成员也可以访问。成员内部类不能包含任何static变量或方法。

    class OuterClass {private String name;class InnerClass {public void displayName() {System.out.println(name);}}
    }
    
  2. 局部内部类(Local Inner Class):
    局部内部类是定义在一个块中的类,例如一个方法或一个作用域块中。它们仅在该块执行时可见,并且只能使用final或effectively final的局部变量。

    public class OuterClass {public void someMethod() {final String name = "Local";class LocalInnerClass {public void displayName() {System.out.println(name);}}LocalInnerClass lic = new LocalInnerClass();lic.displayName();}
    }
    
  3. 匿名内部类(Anonymous Inner Class):
    匿名内部类是没有名称的局部内部类。它通常用于扩展一个类或实现接口的一次性使用。匿名内部类不能有构造器,但可以包含初始化代码块。

    public class OuterClass {public void someMethod() {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Anonymous inner class as a Runnable");}});thread.start();}
    }
    
  4. 静态内部类(Static Nested Class):
    静态内部类与其他内部类最大的不同是,它是静态的,可以包含静态成员。静态内部类通常用作与外部类关联的辅助类。它们不需要外部类实例即可实例化。

    class OuterClass {static class StaticNestedClass {public void displayInfo() {System.out.println("This is a static nested class");}}
    }
    

内部类提供了一种强大的方式来组织相关的类,同时保持代码的可读性和可维护性。通过内部类,可以更清晰地表示类之间的关系,并且可以隐藏不需要对外暴露的实现细节。

22. Java 中 IO 流分为几种?

在 Java 中,IO(输入/输出)流主要分为两大类:字节流(Byte Streams)和字符流(Character Streams)。每一类又可以根据其功能分为输入流和输出流。

  1. 字节流(Byte Streams):
    • 输入流(InputStream):用于从源数据源(如文件、网络等)读取数据。
    • 输出流(OutputStream):用于向目标数据源(如文件、网络等)写出数据。

字节流主要包括以下类:

  • InputStream 的子类:FileInputStream、ByteArrayInputStream、FilterInputStream(及其子类如 BufferedInputStream)、DataInputStream 等。
  • OutputStream 的子类:FileOutputStream、ByteArrayOutputStream、FilterOutputStream(及其子类如 BufferedOutputStream)、DataOutputStream 等。
  1. 字符流(Character Streams):
    • 输入流(Reader):用于从源数据源读取字符数据。
    • 输出流(Writer):用于向目标数据源写出字符数据。

字符流主要包括以下类:

  • Reader 的子类:FileReader、CharArrayReader、BufferedReader、InputStreamReader(用于转换字节流到字符流)等。
  • Writer 的子类:FileWriter、CharArrayWriter、BufferedWriter、OutputStreamWriter(用于转换字符流到字节流)等。

此外,Java 还提供了用于序列化和反序列化对象的 ObjectInputStream 和 ObjectOutputStream,它们分别继承自 InputStream 和 OutputStream。

以下是一个简单的使用 FileInputStream 和 FileOutputStream 进行文件复制的代码示例:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class FileCopy {public static void main(String[] args) {try (FileInputStream in = new FileInputStream("source.txt");FileOutputStream out = new FileOutputStream("destination.txt")) {byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}} catch (IOException e) {e.printStackTrace();}}
}

以上就是 Java 中 IO 流的基本分类及其简短描述。希望这个答案对您有所帮助。

【150 道精选 Java 高频面试题】请go公众号:码路向前 。

相关文章:

2024年150道高频Java面试题(十一)

21. 什么是 Java 中的内部类?它有哪些类型? Java 中的内部类是定义在另一个类内部的类。内部类能够访问其外部类的成员,包括那些声明为私有的成员。内部类是面向对象编程中的一个特色,可以用来逻辑上组织相关的类,并且…...

【MySQL】4.MySQL日志管理与数据库的备份和恢复

备份的目的只要是为了灾难恢复,备份还可以测试应用,回滚数据,修改和查询历史数据,审计等 日志在备份、恢复中起着重要作用 一、数据库备份的重要性 在生产环境中,数据的安全性至关重要 任何数据丢失都可能产生严重的…...

os模块篇(三)

专栏目录 文章目录 专栏目录os.putenv(key, value, /)os.setegid(egid, /)os.seteuid(euid, /)os.setgid(gid, /)os.setgroups(groups, /)os.setns(fd, nstype0)os.setpgrp()os.setpgid(pid, pgrp, /)os.setpriority(which, who, priority) os.putenv(key, value, /) os.puten…...

kvm虚拟机迁移--来自gpt

离线迁移 离线迁移KVM虚拟机主要涉及将虚拟机完全关闭,然后移动虚拟机的磁盘文件和配置文件到新的宿主机上,并在新宿主机上启动虚拟机。下面是具体的步骤和命令: 步骤 1: 关闭虚拟机 首先,在源宿主机上关闭目标虚拟机。确保虚拟…...

用Typora+picgo+cloudflare+Telegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南)

用TyporapicgocloudflareTelegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南) 前提:有github何cloudflare (没有的话注册也很快) 首先,是一个别人写的详细的配置流程,傻瓜式教程&am…...

鸿蒙TypeScript开发入门学习第3天:【TS基础类型】

1、TypeScript 基础类型 TypeScript 包含的数据类型如下表: 注意: TypeScript 和 JavaScript 没有整数类型。 2、Any 类型 任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,它常用于以下三种情况。 1、变量的值会动态改变时&…...

gitee 本地文件提交到仓库

一、准备工作 1.下载Git Bash Git Bash官网下载地址 http://www.git-scm.com/download/ 点此跳转 2.注册或登录gitee gitee官网地址 https://gitee.com/ 点此跳转 没有账号选择注册有账号的话直接登陆 3.在gitee中新建一个空的仓库 登陆成功后点进个人主页,点击…...

TemperatureTop-kTop-p

一、温度 在语言模型中使用温度(temperature)这个参数是为了控制文本生成过程中的随机性和可预测性。这个概念来自于统计力学中的温度概念,在那里它用来描述系统的熵(或随机性)水平。在语言模型中,输出概率…...

HTTP 协议中常用的两种请求方法:get请求与post请求

一、get请求 (1)什么是 GET 请求? GET 请求是一种向服务器请求获取资源的方式。它通过 URL 将请求参数附加到请求中,并将请求发送给服务器。GET 请求通常用于获取数据,例如读取文章、获取用户信息等操作。 在Node.j…...

飞天使-k8s知识点28-kubernetes散装知识点5-helm安装ingress

文章目录 安装helm添加仓库下载包配置创建命名空间安装 安装helm https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gztar -xf helm-v3.2.3-linux-amd64.tar.gzcd linux-amd64mv helm /usr/local/bin修改/etc/profile 文件,修改里面内容,然后重新启用export PATH$P…...

linux i2c-tools使用总结

1,安装iic-tools sudo apt install i2c-tools -y 2,查看有几条iic总线 [root@sino-platform:/root]# ls /dev/i2c- i2c-0 i2c-1 i2c-2 i2c-3 3,查看i2c命令 [root@sino-platform:/root]# i2c i2cdetect i2cdump i2cget i2cset 4,iic-help命令 [root@sino-platform…...

App推广新篇章:Xinstall助力精准分析与优化

在当前的移动应用市场中,App推广已成为每个开发者不可或缺的一环。然而,推广并非简单的投放广告与等待用户下载,而是需要一套科学、系统的分析与优化流程。这正是Xinstall作为国内专业的App全渠道统计服务商,能够为您带来的核心价…...

vue知识点: v-if和v-for为何不能同时使用?

在vue2和vue3的官方文档里都写到不推荐 v-if和v-for同时使用&#xff0c;如下代码所示&#xff1a; <li v-for"todo in todos" v-if"!todo.isComplete">{{ todo.text }} </li> 一、vue3文档&#xff1a;列表渲染 | Vue.js 在vue3中&#xff…...

2024.3.31力扣(1200-1400)刷题记录

一、1523. 在区间范围内统计奇数数目 1.模拟 class Solution:def countOdds(self, low: int, high: int) -> int:# 模拟return len(range(low,high1,2)) if low & 1 else len(range(low1,high1,2)) 2.数学 总结规律。首为偶数就向下取整&#xff1b;奇数就向上取整。…...

【核弹级软安全事件】XZ Utils库中发现秘密后门,影响主要Linux发行版,软件供应链安全大事件

Red Hat 发布了一份“紧急安全警报”&#xff0c;警告称两款流行的数据压缩库XZ Utils&#xff08;先前称为LZMA Utils&#xff09;的两个版本已被植入恶意代码后门&#xff0c;这些代码旨在允许未授权的远程访问。 此次软件供应链攻击被追踪为CVE-2024-3094&#xff0c;其CVS…...

【Linux在程序运行时打印调用栈信息(函数名,文件行号等)】

在程序运行时打印相关调用栈信息&#xff08;函数名&#xff0c;文件行号等&#xff09;,便于梳理调用逻辑等 //stack.c #include <stdio.h> #include <execinfo.h> #include <stdlib.h> #include <string.h> #include <stdbool.h>#define MAX_…...

9.包和工具【go】

在Go语言中,包是代码的组织单元,而工具链则是Go语言提供的命令行工具,用于构建、测试和调试Go代码。下面我将详细介绍如何导入和使用标准库中的包,如何编写自己的包,以及如何使用Go的工具链。 导入和使用标准库中的包 Go的标准库包含了许多预定义的包,你可以通过导入这…...

判断一个字符串是否是真实手机号:JavaScript

一个简单的正则表达式示例&#xff0c;用于匹配中国大陆的手机号&#xff1a; function isValidPhoneNumber(phoneNumber) {// 定义一个正则表达式&#xff0c;用于匹配中国大陆的手机号const phoneRegex /^1[3-9]\d{9}$/;// 使用正则表达式测试手机号是否匹配return phoneReg…...

3D检测:从pointnet,voxelnet,pointpillar到centerpoint

记录centerpoint学习笔记。目前被引用1275次&#xff0c;非常高。 地址&#xff1a;Center-Based 3D Object Detection and Tracking (thecvf.com) GitHub - tianweiy/CenterPoint CenterPoint&#xff1a;三维点云目标检测算法梳理及最新进展&#xff08;CVPR2021&#xff…...

使用canvas内置api完成图片的缩放平移和导出和添加提示

最近挺忙的&#xff0c;几乎没有时间去更新博客&#xff0c;今天正好在学习新东西&#xff0c;正好和大家分享一下。 最近要做一个使用canvas完成图片平移&#xff0c;缩放&#xff0c;添加标注的需求&#xff0c;完成的效果大概如下&#xff1a; 使用canvas内置api完成图片的缩…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

TMC2226超静音步进电机驱动控制模块

目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...

Android Settings 数据库生成、监听与默认值配置

一、Settings 数据库生成机制​ ​传统数据库生成&#xff08;Android 6.0 前&#xff09;​​ ​路径​&#xff1a;/data/data/com.android.providers.settings/databases/settings.db​创建流程​&#xff1a; ​SQL 脚本初始化​&#xff1a;通过 sqlite 工具创建数据库文件…...