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

简介: 1. try-catch-finally中 如果 catch 中 return 了,finally 还会执行吗?会执行的。当try块中发生异常时,控制流会立即转到相关的catch块,执行其中的代码。如果在catch块中出现了return语句,那么该方法或函数的执行就会结束,并且不会再返回到try块或finally块中。但是,无论是否出现异常,finally块中的代码都会在try块之后或者catch块之后执行。这意味着即使在catch块的return语句中完成了对返回值的处理,finally块中的代码仍然会被执行。

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


会执行的

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


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

2. 常见的异常类有哪些

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


受检查异常(Checked Exception):编译器会在代码中强制要求通过try-catch或者声明抛出异常来处理这类异常,否则代码就无法编译通过。

ClassNotFoundException

FileNotFoundException

IOException

SQLException

非受检查异常(Unchecked Exception):不需要强制要求进行处理,程序可以处理也可以不处理,但是这种异常发生后如果不对其进行捕获和处理,则程序会抛出运行时异常并终止执行。

ArithmeticException

ArrayIndexOutOfBoundsException

ClassCastException

NullPointerException

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


OutOfMemoryError

StackOverflowError


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



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


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


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


哈希码具有以下作用:


在散列表中,哈希码使得程序可以快速定位并访问散列表中的元素,从而提高了程序的运行效率。

作为一种敏捷且可靠的方式来比较对象之间的内容,由于Java的equals()方法在判断两个对象是否相等时依赖于它们的哈希码,因此可以通过重写hashCode()方法确保equals()方法的正确性和一致性。

计算哈希码也是编写好的缓存、排序等算法中的非常重要的一部分,因为哈希算法可以对数据进行预处理,通过将不同的数据映射到不同的哈希值上,来提高算法的运行速度并降低耗时。

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

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


String:一个不可变、线程安全的字符序列。

StringBuilder:可变字符序列,线程不安全。通常应用在单线程环境下使用。

StringBuffer:可变字符序列,线程安全。通常应用在多线程环境下使用。

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


String是不可变的,即一旦字符串被创建,就不能被修改。因此,对String进行拼接、删除、插入等操作时会产生大量的中间对象,影响性能。

StringBuilder和StringBuffer都是可变字符序列,可以通过一系列方法对字符串进行操作,比如追加、删除、插入等。两者非常相似,但是StringBuffer是线程安全的,而StringBuilder是不安全的。

对于单线程场景,建议使用StringBuilder,因为其高效而且线程安全检查会降低程序运行速度。

对于多线程场景,由于StringBuilder不是线程安全的,可能会导致一些问题,这时候应该使用StringBuffer。

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

5. Java 中有哪些引用类型


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


强引用(Strong Reference):直接指向对象并且可达的引用,只要强引用存在,垃圾回收器就不会回收该对象。

软引用(Soft Reference):当系统内存空间不足时,垃圾回收器会根据一定的策略将软引用指向的对象进行回收。软引用通常被用于实现某些缓存机制,允许系统按需地回收内存。

弱引用(Weak Reference):比软引用的生命周期更短,在垃圾回收时会优先被回收。弱引用通常被用于实现某些特殊的数据结构,如关联数组、哈希表等。

虚引用(Phantom Reference):无法通过虚引用获取到对象的实例,其主要作用是在对象被垃圾回收器回收之前,提供对对象被回收的一种通知机制。

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

相关文章
|
7月前
|
存储 Java 测试技术
滚雪球学Java(18):解密JavaSE中的堆栈:你真的了解Java内存吗?
【4月更文挑战第7天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
68 1
滚雪球学Java(18):解密JavaSE中的堆栈:你真的了解Java内存吗?
|
7月前
|
安全 Java 调度
【Java】JavaSE实现多线程
【Java】JavaSE实现多线程
90 1
|
7月前
|
Java C++ 索引
【Java】JavaSE基础知识
【Java】JavaSE基础知识
138 0
|
7月前
|
Java
滚雪球学Java(17):探索循环控制:JavaSE中的break与continue秘技
【4月更文挑战第6天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
72 1
滚雪球学Java(17):探索循环控制:JavaSE中的break与continue秘技
|
7月前
|
存储 安全 Java
滚雪球学Java(19):JavaSE中的内存管理:你所不知道的秘密
【4月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
69 4
滚雪球学Java(19):JavaSE中的内存管理:你所不知道的秘密
|
7月前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
34 0
|
7月前
|
存储 Java 程序员
JavaSE&Java的异常
JavaSE&Java的异常
50 0
|
7月前
|
存储 Java 测试技术
滚雪球学Java(11):高效编程之道:精通JavaSE顺序结构的关键技巧
【2月更文挑战第23天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
73 2
|
7月前
|
存储 编解码 移动开发
【Java】JavaSE的IO流操作
【Java】JavaSE的IO流操作
82 0
|
7月前
|
Java 大数据
Java大数据面试复习30天冲刺 - 日积月累,每日五题【Day04】——JavaSE
Java大数据面试复习30天冲刺 - 日积月累,每日五题【Day04】——JavaSE
66 0
下一篇
DataWorks