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

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

在这里插入图片描述


http://www.kler.cn/a/511816.html

相关文章:

  • Pytorch使用教程(12)-如何进行并行训练?
  • RabbitMQ实现延迟消息发送——实战篇
  • 移远通信多模卫星通信模组BG95-S5获得Skylo网络认证,进一步拓展全球卫星物联网市场
  • 【神经网络基础】
  • 重温STM32之环境安装
  • TTL 在 Redis 缓存中的作用
  • DenseNet-密集连接卷积网络
  • 服务器硬盘RAID速度分析
  • 【算法】集合List和队列
  • 第二十四课 Vue中子组件调用父组件数据
  • 从 Spark 到 StarRocks:实现58同城湖仓一体架构的高效转型
  • 算法日记4:796. 子矩阵的和(二维前缀和)
  • 前端炫酷动画--图片(一)
  • 2024年博客之星主题创作|猫头虎分享AI技术洞察:2025年AI发展趋势前瞻与展望
  • 火狐浏览器Firefox一些配置
  • C# 可空值类型
  • 在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤
  • Kotlin基础知识学习(三)
  • Vue3 nginx 打包后遇到的问题
  • 数据结构——AVL树的实现
  • FPGA与ASIC:深度解析与职业选择
  • IOS 安全机制拦截 window.open
  • vector扩容 list和vector的比较
  • Kotlin 2.1.0 入门教程(六)
  • Windows上同时配置GitHub和Gitee服务
  • MySQL left join联合查询(on)