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.rhkb.cn/news/5011.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁Java中的国密算法:安全保障的密钥

一、引言 在数字化浪潮席卷全球的当下,信息安全已然成为国家、企业乃至个人无法忽视的重要议题。国密算法,作为我国自主研发的密码算法体系,宛如坚固的盾牌,为国家信息安全筑起了一道坚不可摧的防线。它的诞生,不仅承载…

金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践

导读:中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此…

1.2.神经网络基础

目录 1.2.神经网络基础 1.2.1.Logistic回归 1.2.2 梯度下降算法 1.2.3 导数 1.2.4 向量化编程 1.2.5 正向传播与反向传播 1.2.6.练习 1.2.神经网络基础 1.2.1.Logistic回归 1.2.1.1.Logistic回归 逻辑回归是一个主要用于二分分类类的算法。那么逻辑回归是给定一个x ,…

MIAOYUN信创云原生项目亮相西部“中试”生态对接活动

近日,以“构建‘中试’生态,赋能科技成果转化”为主题的“科创天府智汇蓉城”西部“中试”生态对接活动在成都高新区菁蓉汇隆重开幕。活动分为成果展览、“中试”生态主场以及成果路演洽谈对接三大板块。在成果展览环节,成都元来云志科技有限…

【vitePress】基于github快速添加评论功能(giscus)

一.添加评论插件 使用giscus来做vitepress 的评论模块,使用也非常的简单,具体可以参考:giscus 文档,首先安装giscus npm i giscus/vue 二.giscus操作 打开giscus 文档,如下图所示,填入你的 github 用户…

成就与远见:2024年技术与思维的升华

个人主页:chian-ocean 前言: 2025年1月17日,2024年博客之星年度评选——创作影响力评审的入围名单公布。我很荣幸能够跻身Top 300,虽然与顶尖博主仍有一定差距,但这也为我提供了更加明确的发展方向与指引。展望崭新的2025年&…

一文了解如何在Qt中间集成Halcon窗口并在子线程显示(附工程源码下载链接)

在基于图像处理的开发中,Halcon作为功能强大的图像处理库,经常需要与Qt结合,以便通过Qt提供的UI功能更好地显示和交互。本文将讲解如何在Qt中集成Halcon窗口,并通过子线程实现Halcon图像的显示,保证主线程的流畅运行。…

游戏引擎学习第80天

Blackboard:增强碰撞循环,循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改,以便实现一些新的功能。具体来说,是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏,目标是构建一些更丰富…

深度学习-89-大语言模型LLM之AI应用开发的基本概念

文章目录 1 什么是智能体(Agent)2 什么是大语言模型(LLM)2.1 LLM的训练及使用2.2 Transformer架构2.3 基于LLM的Agent框架3 什么是检索增强生成(RAG)3.1 RAG是什么3.2 生成式AI应用开发3.3 RAG的整体流程3.4 RAG技术3.4.1 简单RAG(Simple RAG)3.4.2 校正RAG(Corrective RAG)3.4…

电子科大2024秋《大数据分析与智能计算》真题回忆

考试日期:2025-01-08 课程:成电信软学院-大数据分析与智能计算 形式:开卷 考试回忆版 简答题(4*15) 1. 简述大数据的四个特征。分析每个特征所带来的问题和可能的解决方案 2. HDFS的架构的主要组件有哪些&#xff0…

Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 我们每天都在与各种智能设备打交道,从手机到电脑,再到各种外设,它们已经…

Docker 实现MySQL 主从复制

一、拉取镜像 docker pull mysql:5.7相关命令: 查看镜像:docker images 二、启动镜像 启动mysql01、02容器: docker run -d -p 3310:3306 -v /root/mysql/node-1/config:/etc/mysql/ -v /root/mysql/node-1/data:/var/lib/mysql -e MYS…

多监控m3u8视频流,怎么获取每个监控的封面图(纯前端)

文章目录 1.背景2.问题分析3.解决方案3.1解决思路3.2解决过程3.2.1 封装播放组件3.2.2 隐形的视频div3.2.3 截取封面图 3.3 结束 1.背景 有这样一个需求: 给你一个监控列表,每页展示多个监控(至少12个,m3u8格式)&…

VS Code AI开发之Copilot配置和使用详解

随着AI开发工具的迅速发展,GitHub Copilot在Cursor、Winsuf、V0等一众工具的冲击下,推出了免费版本。接下来,我将为大家介绍GitHub Copilot的配置和使用方法。GitHub Copilot基于OpenAI Codex模型,旨在为软件开发者提供智能化的代…

前端开发Web

Ajax 概念:Asynchronous JavaScriptAnd XML,异步的JavaScript和XML 作用: 数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的…

Oracle 深入学习 Part 14:Managing Password Security and Resources(管理密码安全性和资源)

Profiles Profile 是一个以名称标识的集合,用于管理 密码 和 资源限制。 每个用户都对应一个profiles,可以通过 CREATE USER 或 ALTER USER 命令分配给用户。 Profiles 可以启用或禁用。 Profiles 可以关联到默认的 DEFAULT Profile。 密码管理&…

ConvBERT:通过基于跨度的动态卷积改进BERT

摘要 像BERT及其变体这样的预训练语言模型最近在各种自然语言理解任务中取得了令人印象深刻的性能。然而,BERT严重依赖于全局自注意力机制,因此存在较大的内存占用和计算成本。尽管所有的注意力头都从全局角度查询整个输入序列以生成注意力图&#xff0…

路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)

近期因公司新办公区建设,原有的爱快路由器的SDWAN功能实现分支之间互联的服务还需要继续使用。在原有的小型网络中,使用的爱快路由器当作网关设备,所以使用较为简单,如下图所示。 现变更网络拓扑为三层网络架构,但原有的SDWAN分支…

豆包升级了“眼睛”,看APP截图就能写代码了!超低价让多模态AI普惠

金磊 发自 上海量子位 | 公众号 QbitAI 豆包的“眼睛”升级了,现在让它看一眼APP截图,就能直接给你生成代码! 话不多说,我们直接给它上一个难度。 例如我们先随机截取一张网站的图片: 再来到火山方舟的大模型广场&…

PyTorch使用教程(9)-使用profiler进行模型性能分析

1、简介 PyTorch Profiler是一个内置的性能分析工具,可以帮助开发者定位计算资源(如CPU、GPU)的瓶颈,从而更好地优化PyTorch程序。通过捕获和分析GPU的计算、内存和带宽利用情况,能够有效识别并解决性能瓶颈。 2、原…