持续总结中!2024年面试必问 100 道 Java基础面试题(十七)

上一篇地址:持续总结中!2024年面试必问 100 道 Java基础面试题(十六)-CSDN博客

三十三、try里面return,finally还会执行吗?

答案是:会执行。

在Java中,无论是否发生异常,或者是否在trycatch块中使用了return语句,finally块中的代码都会执行。这是finally块的一个特性,确保了资源的正确释放,如关闭文件流、数据库连接等。

try-catch-finally 结构

  • try 块:包含可能会抛出异常的代码。
  • catch 块:用于捕获并处理try块中抛出的异常。
  • finally 块:无论是否发生异常,finally块中的代码都会执行,通常用于执行清理工作。

示例代码

public class FinallyExample {
    public static void main(String[] args) {
        int result = trySomething(10);
        System.out.println("Result is: " + result);
    }

    public static int trySomething(int value) {
        try {
            if (value < 0) {
                throw new IllegalArgumentException("Value cannot be negative");
            }
            return value * 2; // 假设这里有一个return语句
        } catch (IllegalArgumentException e) {
            System.out.println("Caught an exception: " + e.getMessage());
            return -1; // 异常处理后的return
        } finally {
            // 无论是否通过try或catch返回,finally块都会执行
            System.out.println("Finally block executed");
            return -99; // finally块中的return会覆盖前面的return
        }
    }
}

在这个示例中,trySomething方法中的try块包含一个return语句,如果value大于等于0,它将返回value * 2。然而,即使有return语句,finally块仍然会执行,并且由于finally块中也有一个return语句,它将覆盖try块中的返回值,最终返回-99

注意事项

  • 如果finally块中包含return语句,那么它将改变方法的返回值,即使trycatch块中也有return语句。
  • 如果trycatch块中有return语句,并且随后finally块中也有return语句,那么finally块中的return语句将决定方法的最终返回值。
  • finally块是在退出trycatch块之后,实际返回到方法调用者之前执行的。

总结来说,无论try块中是否有return语句,finally块中的代码都会执行,除非程序在trycatch块中通过System.exit()退出了 JVM。

三十四、int和Integer有什么区别?

以下是intInteger之间的主要区别:

  1. 类型

    • int 是Java中的一个基本数据类型,它是一个32位的整数,范围从-2^31到2^31-1。
    • Integer 是一个包装类,它封装了一个int类型的值。Integer类是Java提供的所有包装类之一,位于java.lang包中。
  2. 自动装箱与拆箱

    • Java 5引入了自动装箱和拆箱的特性。自动装箱是将基本数据类型转换为对应的包装类的过程,反之,自动拆箱是从包装类转换为基本数据类型。
      Integer referenceInt = 5; // 自动装箱(基本类型int转换为Integer对象)
      int num = referenceInt;    // 自动拆箱(Integer对象转换为基本类型int)
  3. 默认值

    • int类型的变量必须初始化,因为基本数据类型不能有默认值。
    • Integer类型的变量可以不初始化,因为对象可以被赋予null值。
  4. 性能

    • 使用int通常比使用Integer更快,因为Integer是对象,而对象的操作涉及到更多的内存管理开销。
  5. 集合框架

    • 集合框架(如ArrayListHashMap等)只能接受对象作为成员,因此当需要在集合中存储整数值时,必须使用Integer
  6. 缓存

    • Integer类有一个缓存机制,它缓存了从-128到127的整数值对应的Integer对象实例。当创建这个范围内的Integer对象时,实际上是从缓存中获取的,而不是每次创建新对象。
  7. 比较

    • 当比较两个int类型的值时,使用的是==操作符,它比较的是它们的值。
    • 当比较两个Integer对象时,如果没有重写equals()方法,比较的是对象的内存地址。为了比较两个Integer对象的值,应使用equals()方法或构造函数Integer(int i)创建对象。
  8. 数学运算

    • int类型的变量可以直接进行数学运算。
    • Integer对象需要调用相应的方法来进行数学运算,如intValue()doubleValue()等。

示例代码

public class IntAndIntegerExample {
    public static void main(String[] args) {
        int primitiveInt = 10;
        Integer wrapperInt = new Integer(10);
        
        // 自动装箱
        Integer autoboxedInt = 20;
        
        // 自动拆箱
        int autounboxedInt = wrapperInt;
        
        // 比较int和Integer
        if (primitiveInt == wrapperInt) {
            System.out.println("int and Integer are equal in value");
        }
        
        // 使用equals()比较两个Integer对象
        if (wrapperInt.equals(autoboxedInt)) {
            System.out.println("Integer objects are equal in value");
        }
    }
}

在示例中,primitiveInt是一个int类型的变量,而wrapperInt是一个Integer对象。autoboxedInt演示了自动装箱的过程,而autounboxedInt演示了自动拆箱的过程。比较intInteger时,需要使用不同的方法,因为它们的比较机制不同。

总结来说,intInteger在Java中有根本的不同:一个是基本数据类型,另一个是封装类。选择使用哪一个取决于具体的应用场景和性能要求。

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

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

相关文章

SpringBoot框架学习笔记(一):依赖管理和自动配置

本文为个人笔记&#xff0c;仅供学习参考之用&#xff0c;如有不当之处请指出。 本文基于springboot2.5.3版本&#xff0c;开发环境需要是 jdk 8 或以上&#xff0c;maven 在 3.5 1 SpringBoot 基本介绍 1.1 官方文档 &#xff08;1&#xff09; 官网 : https://spring.io/pr…

张朝阳对话华为Fellow陈海波:万物智联时代,鸿蒙如何实现“换道超车”?

随着智能终端设备的普及和万物智联时代的加速到来&#xff0c;鸿蒙生态的高速发展正引发全行业的关注。 搜狐创始人、董事局主席兼CEO、物理学博士张朝阳与华为Fellow、基础软件首席科学家陈海波带来了一场关于鸿蒙生态的公开课。鸿蒙技术架构有哪些领先性?HarmonyOS发布5年来…

compose调用系统分享功能分享图片文件

compose调用系统分享功能图片文件 简介UI界面提供给外部程序的文件访问权限创建FileProvider设置共享文件夹 通用分享工具虚拟机验证结果参考 本系列用于新人安卓基础入门学习笔记&#xff0c;有任何不同的见解欢迎留言 运行环境 jdk17 andriod 34 compose material3 简介 本案…

Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)

一、集群环境说明 1、用VMware安装3台Centos7.9虚拟机 2、虚拟机配置&#xff1a;2C&#xff0c;2G内存&#xff0c;50G存储 3、集群架构 从表格中&#xff0c;可以看出&#xff0c;Hadoop集群&#xff0c;主要有2部分&#xff0c;一个是HDFS服务&#xff0c;一个是YARN服务 …

[系统安全] 六十.威胁狩猎 (1)APT攻击检测及防御与常见APT组织的攻击案例分析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

四、管道与重定向

四、管道与重定向 1 重定向 0,标准输入(键盘) 1,标准输出 2,标准错误&#xff0c; 3,进程在执行过程中打开的其他文件。 &:表示正确错误混合输出1.1 输出重定向 (覆盖&#xff0c;追加) > ----覆盖 >> ----追加 正确输出&#xff1a; 1> 1>> 等价…

Git 仓库内容操作

Git 仓库内容操作 | CoderMast编程桅杆Git 仓库内容操作 添加文件到暂存区 使用如下指令将工作区的文件添加到暂存区&#xff0c;告诉 Git 在下次 commit 时哪些文件做出了修改。 commit 指令详看后续 添加一个或多个文件到暂存区&#xff1a; 添加指定目录到暂存区 添加当前目…

ffmpeg与sdl的个人笔记

说明 这里的ffmpeg基础知识和sdl基础知识仅提及与示例代码相关的知识点, 进阶可学习雷神的博客。 https://blog.csdn.net/leixiaohua1020 当然&#xff0c;如代码写的有问题或有更好的见解&#xff0c;欢迎指正&#xff01; 音视频基础知识 在学习音视频理论知识时&#xff…

CSS中设置透明度的2个属性:opacity,RGBA以及它们的区别

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

试用了三个Ai音乐工具,我的偶像河图要完蛋了

试了三个生成音乐的ai工具&#xff0c;分别是爆火的suno,后期新秀udio&#xff0c;还有我们国内的天工。 先说感受&#xff0c;suno和天工我觉得稍微靠前&#xff0c;udio可能我的配置风格有问题&#xff0c;啪啪啪连选了好几个风格&#xff0c;生成的东西有点怪。 我随手写了…

【机器学习基础1】什么是机器学习、预测模型解决问题的步骤、机器学习的Python生态圈

文章目录 一. 什么是机器学习1. 概念2. 机器学习算法分类 二. 利用预测模型解决问题的步骤三. 机器学习的Python生态圈 一. 什么是机器学习 1. 概念 机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;是一门多领域的交叉学科&#xff0c;涉及概率论、统计学、…

深度学习 --- stanford cs231学习笔记(一)

stanford cs231学习笔记(一) 1&#xff0c;先是讲到了机器学习中的kNN算法&#xff0c;然后因为kNN分类器的一些弊端&#xff0c;引入了线性分类器。 kNN算法的三大弊端&#xff1a; (1)&#xff0c;计算量大&#xff0c;当特征比较多时表示性差 (2)&#xff0c;训练时耗时少…

01 - 安装Kettle

下载安装包 我这边提供的安装包是绿色版的&#xff0c;开箱即用 Kettle.exe 阿里云盘分享 提取码: 8sd5 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘」APP &#xff0c;无需下载极速在线查看&#xff0c;视频原画倍速播放。 启动步骤 解压 双击Spo…

注意力机制(四)(多头注意力机制)

​&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习基础知识》 相关专栏&#xff1a; ⚽《机器学习基础知识》 &#x1f3d0;《机器学习项目实战》 &#x1f94e;《深度学习项目实…

Python | Leetcode Python题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; class Solution:def canJump(self, nums: List[int]) -> bool:n, rightmost len(nums), 0for i in range(n):if i < rightmost:rightmost max(rightmost, i nums[i])if rightmost > n - 1:return Truereturn False

闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子

前言 一个在实际应用中 EF Core 集成 FluentValidation 进行数据校验的例子。 Step By Step 步骤 创建一个 Asp.Net Core WebApi 项目 引用以下 Nuget 包 FluentValidation.AspNetCore Microsoft.AspNetCore.Identity.EntityFrameworkCore Microsoft.EntityFrameworkCore.Re…

Unity 合并子物体获得简化Mesh

合并子物体获得简化Mesh &#x1f959;环境&#x1f96a;Demo &#x1f959;环境 PackageManager安装Editor Coroutines 导入插件&#x1f448; &#x1f96a;Demo 生成参数微调&#xff1a;Assets/EasyColliderEditor/Scripts/VHACDSettings/VHACDSettings.asset

TDengine高可用架构之TDengine+Keepalived

之前在《TDengine高可用探讨》提到过&#xff0c;TDengine通过多副本和多节点能够保证数据库集群的高可用。单对于应用端来说&#xff0c;如果使用原生连接方式&#xff08;taosc&#xff09;还好&#xff0c;当一个节点下线&#xff0c;应用不会受到影响&#xff1b;但如果使用…

Kafka 3.x.x 入门到精通(03)——Kafka基础生产消息

Kafka 3.x.x 入门到精通&#xff08;03&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.4.1 生产消息的基本步骤2.4.2 生产消息的基本代码2.4.3 发送消息2.4.3.1 拦截器2.4.3.1.1 增加拦截器类2.4.3.1.2 配置拦截器 2.4.3…

Mysql事务—隔离级别—脏读、不可重复读、幻读-遥遥领先版

事务的基本概念 事务就是一组原子性的操作&#xff0c;这些操作要么全部发生&#xff0c;要么全部不发生。事务把数据库从一种一致性状态转换成另一种一致性状态。 事务最经典也经常被拿出来说例子就是转账了。 假如小明要给小红转账1000元&#xff0c;这个转账会涉及到两个…
最新文章