Java高频面试之SE-15

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶

String 怎么转成 Integer 的?它的原理是?

在 Java 中,要将 String 转换为 Integer 类型,可以使用 Integer 类的静态方法 parseInt(String s) 或者 Integer 类的构造函数。

1. 使用 Integer.parseInt(String s)

String str = "123";
int number = Integer.parseInt(str);

2. 使用 Integer 构造函数

String str = "123";
Integer number = new Integer(str);

原理

1. Integer.parseInt(String s)
  • 该方法会将输入的字符串 s 转换为一个 int 类型的值,方法内部实现的步骤大致如下:
    1. 前导空格处理:首先会去除字符串开头的空格。
    2. 符号处理:检查字符串的第一个字符是否为 ‘-’ 或 ‘+’,以确定最终整数的符号。
    3. 字符到数字的转换:逐字符地遍历字符串,检查每个字符是否在合法范围(‘0’到’9’)。如果不在合法范围,抛出 NumberFormatException
    4. 数值累加:不断更新一个整型变量来存储最终结果,使用公式:
      [
      result = result \times 10 + (currentCharacter - ‘0’)
      ]
    5. 范围检查:检查转换后的结果是否超出了 int 类型的范围(-2,147,483,648 到 2,147,483,647)。
2. Integer 构造函数
  • 使用构造函数 new Integer(String s) 的过程与 parseInt 方法相似,也是将字符串转换为整数。同时,在 JDK 9 之后,该构造函数已经被标记为不推荐使用(deprecated),推荐使用 Integer.valueOf(String) 取而代之。valueOf 方法在功能上也会调用 parseInt 方法,但会返回 Integer 对象用于缓存。

注意事项

  1. 异常处理:在转换过程中,如果字符串不符合数字格式,如包含字母或者特殊字符,将会抛出 NumberFormatException。因此,建议在使用这两个方法时添加异常处理。

    try {
        int number = Integer.parseInt("123A"); // 这将抛出异常
    } catch (NumberFormatException e) {
        e.printStackTrace(); // 处理异常
    }
    
  2. 数字范围:确保字符串表示的数字在 int 的有效范围内,否则会抛出 NumberFormatException,例如将大于 Integer.MAX_VALUE 的数值字符串转换为 int

通过 Integer.parseInt(String s)Integer 构造函数,我们可以将 String 类型的数字转换为 Integer 类型。在实际使用中,建议使用 Integer.parseIntInteger.valueOf 来进行转换,确保良好的性能和内存管理。

说说Java中的异常处理机制

Java中的异常处理机制是Java语言的重要特性之一,它允许程序在运行时处理错误和异常条件,从而提高程序的稳定性和可靠性。

1. 异常的概念

异常 是指程序运行过程中发生的不可预期事件,这些事件使得程序的正常执行流程中断。在Java中,所有的异常都是 Throwable 类的子类,Throwable 分为两种主要类型:

  • 错误 (Error):表示严重的问题,通常是由虚拟机引起的,程序无法处理,比如 OutOfMemoryError
  • 异常 (Exception):表示程序可以捕获并处理的问题,例如文件未找到、网络连接失败等。这部分又分为两类:
    • 检查异常 (Checked Exception):在编译时被检查,必须显式捕获或声明(例如 IOExceptionSQLException)。
    • 未检查异常 (Unchecked Exception):在运行时发生,通常是由于程序逻辑错误引起的,不需要显式捕获(例如 NullPointerExceptionArrayIndexOutOfBoundsException)。

2. 基本语法

Java 中的异常处理使用 try-catch-finally 语句来实现。

try {
    // 可能抛出异常的代码
} catch (ExceptionType1 e1) {
    // 处理 ExceptionType1 异常
} catch (ExceptionType2 e2) {
    // 处理 ExceptionType2 异常
} finally {
    // 无论是否捕获到异常都会执行的代码(可选)
}
  • try 块:包含可能会抛出异常的代码。
  • catch 块:用于捕获并处理特定类型的异常,可以有多个 catch 块。
  • finally 块:无论是否发生异常,在 trycatch 中的代码运行之后都会执行的代码,通常用于资源释放,如关闭流、数据库连接等。

3. 抛出异常

可以使用 throw 语句手动抛出异常,并使用 throws 关键字在方法声明中指明该方法可能抛出的异常类型。

public void myMethod() throws IOException {
    // 抛出异常
    throw new IOException("File not found");
}

4. 自定义异常

Java允许用户自定义异常,通过继承 ExceptionRuntimeException 类来创建自己的异常类。

public class MyCustomException extends Exception {
    public MyCustomException(String message) {
        super(message);
    }
}

5. 异常处理的关键原则

  • 尽量捕获具体异常:在多个 catch 块中,优先捕获具体的异常类型,后捕获一般异常(如 Exception),以确保更好的错误处理。

  • 清晰的异常信息:抛出异常时,提供明确的错误信息,以帮助开发者快速定位问题。

  • 资源管理:在 finally 块中释放资源,或使用 try-with-resources 语句自动管理资源,避免资源泄露。

    try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
        // 读取文件
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  • 合适的异常类型:使用检查异常表示受检情况,使用未检查异常表示编程错误;不应滥用异常。

  • 不要忽略异常:不要简单地捕获异常而不处理,一定要进行适当的处理或记录。

在这里插入图片描述
图标更换
https://pan.quark.cn/s/d366949260e9
IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nacos2.3.0 接入pgsql或其他数据库

首先尝试使用官方插件进行扩展,各种报错后放弃,不如自己修改源码吧。 一、官方解决方案 1、nocos 文档地址:Nacos 配置中心简介, Nacos 是什么 | Nacos 官网 2、官方解答:nacos支持postgresql数据库吗 | Nacos 官网 3、源码下载地…

城市电动出行的智慧升级:充电桩可视化管理

通过图扑可视化管理平台,实时监控与优化城市充电桩网络,提高运维效率与用户满意度,支撑绿色交通体系发展,为电动出行打造更加智能化的基础设施解决方案。

关于 Cursor 的一些学习记录

文章目录 1. 写在最前面2. Prompt Design2.1 Priompt v0.1:提示设计库的首次尝试2.2 注意事项 3. 了解 Cursor 的 AI 功能3.1 问题3.2 答案 4. cursor 免费功能体验5. 写在最后面6. 参考资料 1. 写在最前面 本文整理了一些学习 Cursor 过程中读到的或者发现的感兴趣…

idea中远程调试中配置的参数说明

Ⅰ 远程调试中配置的端口号与服务本身端口号区别 一、远程调试中配置端口号的作用 在 IDEA 中进行远程调试时配置的端口号主要用于建立开发工具(如 IDEA)和远程服务之间的调试连接。当你启动远程调试时,IDEA 会监听这个配置的端口号&#xf…

基于 MDL 行情插件的中金所 L1 数据处理最佳实践

本文介绍了如何通过 DolphinDB 的 MDL 插件订阅并处理中金所 Level 1 实时数据。首先,文章简要介绍了 MDL 插件的功能和作用。它是基于 MDL 官方提供的行情数据服务 C SDK(即 TCP 版本 MDL )实现,提供了实时数据获取和处理的能力。…

JupyterLab 安装以及部分相关配置

安装 JupyterLab pip install jupyter启动 JupyterLab jupyter lab [--port <指定的端口号>] [--no-browser] # --port 指定端口 # --no-browser 启动时不打开浏览器安装中文 首先安装中文包 pip install jupyterlab-language-pack-zh-CN安装完成后重启 JupyterLab 选…

LabVIEW电源纹波补偿

在电子设备的电源管理中&#xff0c;电源纹波的存在可能会对设备的稳定性和性能产生负面影响。以某精密电子仪器的电源纹波补偿为例&#xff0c;详细阐述如何运用 LabVIEW 编写程序进行电源纹波补偿。将从电源纹波特点、测量采样、滤波、反馈控制等多个方面展开介绍。 ​ 电源…

嵌入式硬件篇---基本组合逻辑电路

文章目录 前言基本逻辑门电路1.与门&#xff08;AND Gate&#xff09;2.或门&#xff08;OR Gate&#xff09;3.非门&#xff08;NOT Gate&#xff09;4.与非门&#xff08;NAND Gate&#xff09;5.或非门&#xff08;NOR Gate&#xff09;6.异或门&#xff08;XOR Gate&#x…

使用rpc绕过咸鱼sign校验

案例网站是咸鱼 找到加密函数i()&#xff0c;发现参数是由token时间戳appkeydata构成的 js客户端服务 考虑到网站可能有判断时间戳长短而让请求包失效的可能&#xff0c;我们请求包就直接用它的方法生成 下面我们先把token和h置为键值对tjh123 再把方法i()设为全局变量my_…

鸿蒙安装HAP时提示“code:9568344 error: install parse profile prop check error” 问题现象

在启动调试或运行应用/服务时&#xff0c;安装HAP出现错误&#xff0c;提示“error: install parse profile prop check error”错误信息。 解决措施 该问题可能是由于应用使用了应用特权&#xff0c;但应用的签名文件发生变化后未将新的签名指纹重新配置到设备的特权管控白名…

Pix2Pix :用于图像到图像转换的条件生成对抗网络

1. 背景与问题 图像到图像的转换&#xff08;Image-to-Image Translation&#xff09;是计算机视觉中的一个重要任务&#xff0c;指的是在输入一张图像的情况下&#xff0c;生成一张风格、内容或其他条件不同但语义一致的图像。随着深度学习的发展&#xff0c;尤其是生成对抗网…

【大数据2025】Hadoop 万字讲解

文章目录 一、大数据通识大数据诞生背景与基本概念大数据技术定义与特征大数据生态架构概述数据存储数据计算与易用性框架分布式协调服务和任务调度组件数仓架构流处理架构 二、HDFSHDFS 原理总结一、系统架构二、存储机制三、数据写入流程四、心跳机制与集群管理 安全模式&…

docker 安装 nanomq

1.拉取镜像 docker pull emqx/nanomq:latest 2. 创建配置文件夹&#xff08;示例放在/home/nanomq&#xff09; mkdir nanomq chomd 777 nanomq3. 创建配置文件&#xff08;nanomq.conf&#xff09;写入以下内容 mqtt {property_size 32max_packet_size 10KBmax_mqueue_le…

【STM32G4xx的CAN驱动记录】

STM32G4xx的CAN驱动记录 CAN说明CAN的波特率计算数据测试总结 本文主要记录了基于STM32G4xx的CAN接口解析某型号雷达数据遇到的问题及规避方法&#xff0c;CAN总线波特率500Kbps&#xff0c;采样点要求80%附近。 注意CAN总线同步段的时间&#xff01;&#xff01;&#xff01; …

2024年CSDN博客之旅:成长、创作与生活的交响曲

文章目录 《2024年博客之旅&#xff1a;成长、创作与生活的交响曲》一、引言二、个人成长与突破盘点&#xff08;一&#xff09;技术能力的提升&#xff08;二&#xff09;解决问题能力的增强&#xff08;三&#xff09;沟通与表达能力的进步 三、年度创作历程回顾&#xff08;…

微服务与docker

准备工作 在课前资料中给大家提供了黑马商城项目的资料,我们需要先导入这个单体项目。不过需要注意的是,本篇及后续的微服务学习都是基于Centos7系统下的Docker部署,因此你必须做好一些准备: Centos7的环境及一个好用的SSH客户端装好Docker会使用Docker如果是学习过上面Doc…

docker离线安装及部署各类中间件(x86系统架构)

前言&#xff1a;此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本&#xff1a;docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面&#xff0c;这里放在…

02内存结构篇(D3_对象的创建历程)

目录 一、学习前言 二、对象的创建&#xff1a;指针碰撞 & 空闲列表 三、对象的内存布局&#xff1a;三部分组成 1. 对象头 2. 实例数据 3. 对齐填充 四、对象的访问定位 1. 句柄访问 2. 直接指针访问 3. 两者访问方式比较 一、学习前言 运行时数据区了解了&…

Linux系统之kill命令的基本使用

Linux系统之kill命令的基本使用 一、kill命令介绍1. kill命令简介2. kill命令的使用场景3. kill命令使用注意事项 二、kill命令的使用帮助1. 查看kill命令帮助信息2. kill命令帮助解释 三、kill常用的信号1. 列出所有的信号2.kill常用的信号 四、kill命令的基本使用1. 运行一个…

【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;product.kylinos.cn 开发者专区&#xff1a;developer.kylinos.cn 文档中心&#xff1a;document.kylinos.cn 交流论坛&#xff1a;forum.kylinos.cn 服务器环境以及配置 【内核版本…