【JavaSE】Java(五十四):核心要点总结

news2024/12/26 11:05:48

文章目录

  • 1. try-catch-finally中 如果 catch 中 return 了,finally 还会执行吗?
  • 2. 常见的异常类有哪些
  • 3. hashcode 是什么 ,有什么作用
  • 4. java中操作字符串有哪些类,他们之间有什么区别
  • 5. Java 中有哪些引用类型


在这里插入图片描述

1. try-catch-finally中 如果 catch 中 return 了,finally 还会执行吗?


会执行的

当try块中发生异常时,控制流会立即转到相关的catch块,执行其中的代码。如果在catch块中出现了return语句,那么该方法或函数的执行就会结束,并且不会再返回到try块或finally块中。

但是,无论是否出现异常,finally块中的代码都会在try块之后或者catch块之后执行。这意味着即使在catch块的return语句中完成了对返回值的处理,finally块中的代码仍然会被执行。

所以,finally块通常用于释放资源、关闭文件或者网络连接等操作,以确保程序处于正确的状态


2. 常见的异常类有哪些


Java中的异常可以分为两种:

  1. 受检查异常(Checked Exception):编译器会在代码中强制要求通过try-catch或者声明抛出异常来处理这类异常,否则代码就无法编译通过。
  • ClassNotFoundException
  • FileNotFoundException
  • IOException
  • SQLException
  1. 非受检查异常(Unchecked Exception):不需要强制要求进行处理,程序可以处理也可以不处理,但是这种异常发生后如果不对其进行捕获和处理,则程序会抛出运行时异常并终止执行。
  • ArithmeticException
  • ArrayIndexOutOfBoundsException
  • ClassCastException
  • NullPointerException

此外,还有一种特殊的异常类型——Error,表示JVM自身的错误,通常不由应用程序处理。比较常见的错误有:

OutOfMemoryError
StackOverflowError

在Java中,异常是一个非常重要的概念,它可以帮助我们更好地管理代码中的错误情况并提高程序的健壮性。


3. hashcode 是什么 ,有什么作用


hashCode()是Java中的一个方法,用于返回对象的哈希码(hash code)值。哈希码是通过将对象的内部状态与某个固定值结合得到的一个整数,通常用于在散列表(hash table)等数据结构中确定对象的存储位置或查找索引。

每个Java对象都有一个默认的hashCode()方法实现:它将对象的内存地址转换为一个整数值,并且通常会重写该方法,以实现自定义的哈希算法,以提高哈希表等数据结构的性能。

哈希码具有以下作用

  1. 在散列表中,哈希码使得程序可以快速定位并访问散列表中的元素,从而提高了程序的运行效率。
  2. 作为一种敏捷且可靠的方式来比较对象之间的内容,由于Java的equals()方法在判断两个对象是否相等时依赖于它们的哈希码,因此可以通过重写hashCode()方法确保equals()方法的正确性和一致性。
  3. 计算哈希码也是编写好的缓存、排序等算法中的非常重要的一部分,因为哈希算法可以对数据进行预处理,通过将不同的数据映射到不同的哈希值上,来提高算法的运行速度并降低耗时。

4. java中操作字符串有哪些类,他们之间有什么区别


在Java中,常用的操作字符串的类包括:

  1. String:一个不可变、线程安全的字符序列。
  2. StringBuilder:可变字符序列,线程不安全。通常应用在单线程环境下使用。
  3. StringBuffer:可变字符序列,线程安全。通常应用在多线程环境下使用。

它们之间的主要区别在于可变性和线程安全性

  • String是不可变的,即一旦字符串被创建,就不能被修改。因此,对String进行拼接、删除、插入等操作时会产生大量的中间对象,影响性能。
  • StringBuilder和StringBuffer都是可变字符序列,可以通过一系列方法对字符串进行操作,比如追加、删除、插入等。两者非常相似,但是StringBuffer是线程安全的,而StringBuilder是不安全的。
    • 对于单线程场景,建议使用StringBuilder,因为其高效而且线程安全检查会降低程序运行速度。
    • 对于多线程场景,由于StringBuilder不是线程安全的,可能会导致一些问题,这时候应该使用StringBuffer。

在日常的开发中,我们可以根据实际情况选择不同的操作字符串的类,并且尽量避免使用String进行频繁的字符串操作。


5. Java 中有哪些引用类型


在Java中,常见的引用类型包括以下几种:

  1. 强引用(Strong Reference):直接指向对象并且可达的引用,只要强引用存在,垃圾回收器就不会回收该对象。
  2. 软引用(Soft Reference):当系统内存空间不足时,垃圾回收器会根据一定的策略将软引用指向的对象进行回收。软引用通常被用于实现某些缓存机制,允许系统按需地回收内存。
  3. 弱引用(Weak Reference):比软引用的生命周期更短,在垃圾回收时会优先被回收。弱引用通常被用于实现某些特殊的数据结构,如关联数组、哈希表等。
  4. 虚引用(Phantom Reference):无法通过虚引用获取到对象的实例,其主要作用是在对象被垃圾回收器回收之前,提供对对象被回收的一种通知机制。

使用不同的引用类型可以帮助我们解决内存管理方面的问题,控制对象的生命周期,避免内存泄漏等情况。在实际开发中,我们应该根据实际需求和场景选择合适的引用类型,从而使得程序具有更好的性能和可靠性。



在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

$2$驱动模块

目录 1.驱动模块(驱动程序的框架) 2.内核中的打印函数(编写第一个驱动程序) Source Insight 使用: 打印函数编写 分析 3.驱动的多文件编译 4.模块传递参数 安装好驱动之后如何传参? 多驱动之间调用&…

智能照明控制系统在现代建筑工程中的应用 安科瑞 许敏

摘要: 文章分析了在现代建筑工程中智能照明控制系统所具有的优越性,并对如何解决该技术在实际应用中遇到的问题提出了看法与建议。 关键词:智能照明 控制系统 应用节能 引言 随着人们的物质和精神生活水平不断提高,对生活的追求…

MMC整流器Matlab仿真模型子模块个数N=18(含技术文档)

资源地址: MMC整流器Matlab仿真模型子模块个数N=18(含技术文档)资源-CSDN文库 模型介绍: 1.MMC工作在整流侧,子模块个数N=18,直流侧电压Udc=25.2kV,交流侧…

算法设计与分析期末复习(二)

动态规划 基本思想:把求解的问题分成许多阶段或多个子问题,然后按顺序求解各个子问题。**前一个子问题的解为后一个子问题的求解提供了有用的信息。**在求解任何一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优…

Linux面试题汇总

Linux面试题汇总 网络拓展Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别&#…

javaScript蓝桥杯----外卖给好评

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 外卖是现代⽣活中必备的⼀环。收到外卖后,各⼤平台软件常常会邀请⽤户在⼝味,配送速度等多个⽅⾯给与评分。在 element-ui 组件中,已经有相应的 Rate 组件,但是已有组件…

前端052_单点登录SSO_单点退出系统

单点退出系统 1、 需求分析2、EasyMock 添加退出系统模拟接口3、定义Api调用退出接口4、定义 Vuex 退出行为1、 需求分析 所有应用系统退出,全部发送请求到当前认证中心进行处理,发送请求后台删除用户登录数据,并将 cookie 中的用户数据清除。 2、EasyMock 添加退出系统模拟…

大数据分析案例-基于LightGBM算法构建银行客户流失预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

第四章:运算符

第四章:运算符 4.1:算术运算符 ​ 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达值,对数值或表达式进行加()、减(-)、乘(*)、除(/)、取模(%)运算。 运算符名称作用示例加法运算符计算两个值或表达式的和SE…

chatgpt赋能python:Python如何遍历文件:一篇完整的指南

Python如何遍历文件: 一篇完整的指南 在进行文件操作时,遍历文件是相当普遍的需求。Python中提供了多种方法来遍历文件夹和文件,包括os模块,glob模块和os.walk方法。这篇文章将会介绍这些方法及其应用。 什么是遍历文件? 遍历文…

使用 ConstraintLayout

ConstraintLayout解析 1.前言2.了解ConstraintLayout3.基本用法3.1 看一个布局3.2再看一个布局 1.前言 你是不是一直不敢用ConstraintLayout,是以为属性太多太复杂?你心理上的惰性,畏惧它。它其实很好用很强大,如果要用就需要一个…

Day_40关于图的总结

一. 实际问题的抽象与建模 如果我们需要研究一个实际问题,首先第一步就是对这个实际问题进行抽象,抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。具体地说,抽象就是人们在实践的基础上&#xff0c…

Java中的金钱陷阱

前言 有多少小伙伴是被标题 骗 吸引进来的呢,我可不是标题党,今天的文章呢确实跟”金钱“有关系。 但是我们说的不是过度追求金钱而掉入陷阱,而是要说一说在Java程序中,各种跟金钱运算有关的陷阱。 日常工作中我们经常会涉及到…

chatgpt赋能python:Python字幕滚动:如何让你的视频内容更吸引人

Python字幕滚动:如何让你的视频内容更吸引人 如果你是一位视频创作者,你可能知道如何通过字幕来增加你的视频的吸引力。Python提供了一种简单且高效的方法来制作字幕滚动。字幕滚动是指将文字逐个显示在视频下方,以帮助观众跟上视频的进展。…

让我们彻底了解Maven(一)--- 基础和进阶

Maven大家都很熟悉,但是我们很多人,对它其实都是似乎很熟,但是又好像不熟悉的感觉,包括我,今天咱们就一起来彻底了解Maven的所有功能,我们从入门,到原理剖析,再到实践操作&#xff0…

chatgpt赋能python:Python如何遍历列表并提取

Python如何遍历列表并提取 在Python编程语言中,列表是一种非常常见的数据类型。它是一个有序的集合,可以存储多个元素,可以是任何类型的数据,例如整数、字符串、布尔值等等。遍历一个列表并提取其中的元素是一个基本的操作&#…

测试用例设计方法——错误猜测法

很多软件测试从业者用到的黑盒测试用例设计方法大多是等价类划分法、边界值分析法、判定表法、因果图法和正交试验法等,其实还有一种方法不得不提到,那就是错误猜测法,这对资深测试人员尤为重要。因为随着在产品测试的实践中对产品的了解和测…

MySQL目录结构与源码

MySQL目录结构与源码 前言一、主要目录结构二、MySQL 源代码获取 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行&#xff…

Linux命令学习之文本查看命令cat、head和tail

for i in {1..100} do echo $i >> good.txt done把1到100写入到good.txt文件中。接下来使用good.txt这个文件来演示查看文本查看命令。 cat man cat可以看一下帮助使用说明,按q可以退出。 cat是连接文件并把文件内容输出到标准输出上。cat good.txt就可以…

Mirai 僵尸网络变体向 RCE、DDoS 开放 Tenda、Zyxel Gear

Mirai 僵尸网络的一个变体利用四种不同的设备漏洞将流行的基于 Linux 的服务器和物联网 (IoT) 设备添加到可以进行基于网络的攻击(包括分布式拒绝服务 (DDoS) 攻击)的僵尸网络中。 Palo Alto Networks 的 Unit 42 的一个团队观察到这个变体,…