当前位置: 首页 > 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完成图片的缩…...

Codeg:统一管理多AI编码助手,打造企业级远程开发工作空间

1. 项目概述&#xff1a;Codeg&#xff0c;一个企业级的多智能体编码工作空间如果你和我一样&#xff0c;每天的工作流里同时开着Claude Code、Codex CLI、OpenCode等好几个AI编码助手&#xff0c;在终端、IDE和浏览器之间来回切换&#xff0c;只为查看不同智能体的对话记录、管…...

5分钟掌握全能文档下载神器:告别付费壁垒,解放你的知识获取能力

5分钟掌握全能文档下载神器&#xff1a;告别付费壁垒&#xff0c;解放你的知识获取能力 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#x…...

如何快速将网页内容转换为Markdown格式:MarkDownload完整指南

如何快速将网页内容转换为Markdown格式&#xff1a;MarkDownload完整指南 【免费下载链接】markdownload A Firefox and Google Chrome extension to clip websites and download them into a readable markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdown…...

SQL线索

插入insert into 表 (列) value (),(),...;从另一个表插入数据&#xff1a;insert into 表 (列) select 列 from 另一个表 where 限制;删除delete from 表 where 限制;子查询删&#xff1a;delete from 表 where 列 in (select 列 from 另一个表 where 限制);改update 表 set 列…...

GitHub中文化插件终极实战指南:5分钟实现高效中文开发体验

GitHub中文化插件终极实战指南&#xff1a;5分钟实现高效中文开发体验 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub作为全球…...

AI绘画工作流自动化:从NovelAI到Pixiv的Semi-Auto工具实战

1. 项目概述&#xff1a;从手动到自动&#xff0c;解放AI绘画生产力的桌面利器如果你和我一样&#xff0c;是个深度沉迷于AI绘画的创作者&#xff0c;那你一定经历过这样的痛苦&#xff1a;在NovelAI的WebUI里&#xff0c;吭哧吭哧地调好一组参数&#xff0c;生成一张图&#x…...

XUnity.AutoTranslator完整指南:如何为Unity游戏添加智能实时翻译功能

XUnity.AutoTranslator完整指南&#xff1a;如何为Unity游戏添加智能实时翻译功能 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而无法享受心爱的Unity游戏&#xff1f;或者作为…...

ARM架构ACTLR寄存器详解与性能优化实践

1. ARM架构中的ACTLR寄存器深度解析在ARMv7/v8架构中&#xff0c;系统寄存器扮演着处理器与操作系统间的关键接口角色。作为其中的特殊存在&#xff0c;ACTLR&#xff08;Auxiliary Control Register&#xff09;辅助控制寄存器为开发者提供了对处理器底层行为的精细控制能力。…...

2026年奖杯批发源头厂商实力复盘,长沙嘉誉天成工艺品有限公司为何成为行业标杆企业

在各类表彰活动、赛事庆典中&#xff0c;奖杯作为荣誉象征&#xff0c;承载着组织者对获奖者的认可与激励。无论是企业年会的公司奖杯&#xff0c;还是体育赛事的冠军奖杯&#xff0c;其品质直接影响活动效果与品牌形象。作为深耕行业近二十年的专业服务商&#xff0c;长沙嘉誉…...

告别虚拟机:用RK3399开发板搭建你的移动机器人SLAM实验平台(ROS Kinetic + OpenCV 3.4.0)

基于RK3399的移动机器人SLAM实验平台全栈搭建指南 在机器人技术快速发展的今天&#xff0c;同时定位与地图构建(SLAM)已成为自主移动系统的核心技术之一。然而&#xff0c;高性能计算设备的高昂成本往往成为学习者和开发者面临的首要障碍。Rockchip RK3399开发板以其出色的性价…...