当前位置: 首页 > 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;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…...

算法学习——LeetCode力扣图论篇3(127. 单词接龙、463. 岛屿的周长、684. 冗余连接、685. 冗余连接 II)

算法学习——LeetCode力扣图论篇3 127. 单词接龙 127. 单词接龙 - 力扣&#xff08;LeetCode&#xff09; 描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk&#xff1a; 每一对相…...

状态模式详解:管理对象状态的利器

在软件设计中&#xff0c;我们经常会遇到需要根据对象的不同状态来执行不同行为的情况。为了优雅地管理这些状态及其对应的行为&#xff0c;状态模式&#xff08;State Pattern&#xff09;应运而生。本文将深入探讨状态模式的使用条件、Java代码实现&#xff0c;并结合现实社会…...

探索----------------阿里云

目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1&#xff09;内容分发网络CDN 2&#xff09;专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化&#xff08;五大负载&#xff09; 1、cpu 使用率…...

Tidb和MySQL性能简单测试对比

一、单SQL性能对比 由于TiDB的并发能力优秀&#xff0c;但是单个SQL执行延迟较差&#xff0c;为了客观对比&#xff0c;所以只用1个线程来压测tidb和mysql&#xff0c;以观察延迟情况 二、并发SQL性能对比 TiDB:v6.5.2 MySQL:8.0.26 &#xff08;单机&#xff09; 三、结论 …...

2024.2.6力扣每日一题——魔塔游戏

2024.2.6 题目来源我的题解方法一 贪心优先队列 题目来源 力扣每日一题&#xff1b;题序&#xff1a;LCP 30 我的题解 方法一 贪心优先队列 思路&#xff1a;使用贪心的思想&#xff0c;从左到右遍历&#xff0c;若遇到加上当前房间的生命值后小于等于0&#xff0c;由于需要…...

C# OAuth单点登录的实现

原理 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种身份验证技术&#xff0c;它允许用户使用一组凭据&#xff08;如用户名和密码&#xff09;登录多个相关但独立的系统&#xff0c;而无需在每个系统中都进行登录操作。下面是一个简单的SSO实现示…...

AtCoder Beginner Contest 347 (ABCDEF题)视频讲解

A - Divisible Problem Statement You are given positive integers N N N and K K K, and a sequence of length N N N, A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\ldots,A_N) A(A1​,A2​,…,AN​). Extract all elements of A A A that are multiples of K K K, divi…...

【vue2+antvx6】报错Cannot read properties of undefined (reading ‘toUpperCase‘)

我的代码是这样的 <el-collapseref"collapse"v-model"active"accordionclass"collapseStart"change"collapsechange"><el-collapse-item:name"String(index 1)"v-for"(i, index) in List":key"in…...

主流的开发语言、环境及其特点

主流的开发语言及其特点&#xff1a; 1. Python&#xff1a;以其简洁的语法和强大的库支持而闻名&#xff0c;适用于数据科学、人工智能和网络开发等领域。 2. Java&#xff1a;跨平台的编程语言&#xff0c;广泛应用于企业级应用、Android 开发和大型系统开发。 3. C&#xf…...

wordpress 插件 免费/手机营销推广方案

第1步、MVC2 > MVC3 手动处理可以参考这个&#xff1a;http://www.asp.net/whitepapers/mvc3-release-notes#upgrading 使用工具 ASP.NET MVC 3 Application Upgraderhttp://aspnet.codeplex.com/releases/view/59008 这个工具要求VS2010的项目&#xff0c;sln文件头为&…...

吉水县建设局网站/seo技术培训课程

kill,就是这个人还可以挣扎的出来,给他家人打个电话,告诉他们他就要死了,不能回家吃晚饭了.kill -9,就是那个人死在马桶上,隔间还锁着,外面等候的人也不知道他死了.kill -0 PID 向某一进程发送一个无效的信号&#xff0c;如果该进程存在(能够接收信号)&#xff0c;echo $?为0&…...

买做指甲的材料在哪个网站/最新足球消息

说多了都是泪。。。 最后&#xff0c;我们还是要用一首“500的歌”来共勉&#xff1a;来来来&#xff0c;加完今天&#xff0c;还有三天&#xff01; 文章转载自 开源中国社区 [http://www.oschina.net]...

优秀网站欣赏/如何免费制作网站

三层架构(3-tier architecture) 1、用户界面层&#xff08;User Interface layer&#xff09;2、业务逻辑层&#xff08;Business Logic Layer&#xff09;3、数据访问层&#xff08;Data access layer&#xff09;思想&#xff1a;高内聚低耦合面向接口设计的思想“抽屉”式架…...

网页设计与网站开发课程设计/班级优化大师下载安装最新版

该博客转载自&#xff1a;https://blog.csdn.net/gy__my/article/details/78295943 原作者&#xff1a;Eric Li 出处&#xff1a;http://www.cnblogs.com/ericli-ericli/ 1.安装Erlang 所以在安装rabbitMQ之前&#xff0c;需要先安装Erlang 。 小编使用的是otp_win64_18.1 &a…...

工商网站注册公司/下载百度网盘app

原文地址为&#xff1a; python安装numpy和pandas最近要对一系列数据做同比比较&#xff0c;需要用到numpy和pandas来计算&#xff0c;不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了。首要条件&#xff0c;python版本必须是2.7以上。 linux首…...