
Java经典面试题
文章平均质量分 62
痞老板A小安装C4
这个作者很懒,什么都没留下…
展开
-
Java中HashMap底层原理、ConcurrentHashMap
当我们使用put(key, value)方法向HashMap中添加元素时,会首先计算key的哈希值,然后使用这个哈希值对数组长度取模,得到的结果就是该元素在数组中的下标位置。这意味着在进行读写操作时,只要操作的数据分布在一个Segment中,就只需要锁定这个Segment,其他Segment可以同时被其他线程访问,大大提高了并发效率。要注意的是,HashMap只允许有一条记录的键为null,但允许多条记录的值为null。是Java中一个线程安全且高效的哈希表实现,它是从Java 5开始引入的,作为。原创 2024-05-24 23:39:02 · 829 阅读 · 1 评论 -
java中wait()和sleep()的区别
总结:wait()和sleep()虽然都用于控制线程的行为,但它们在用途、是否需要持有锁、释放锁的行为、响应中断的方式以及唤醒方式上都有显著的差异。在Java中,wait()和sleep()都是用于控制线程行为的方法,但它们之间有着显著的差异。原创 2024-05-23 14:08:05 · 332 阅读 · 1 评论 -
Java访问修饰符
在编写代码时,选择正确的访问修饰符是非常重要的,因为它有助于封装和隐藏类的内部状态,从而提供更高的安全性并减少代码之间的耦合度。一般来说,你应该尽可能地将变量和方法设置为最低的(Java提供了四种访问修饰符:private、default(没有关键字,也称为包级私有)、protected和public。)访问级别,以满足你的需求。原创 2024-05-23 00:01:40 · 270 阅读 · 0 评论 -
包装类的自动拆装箱与自动装箱
在Java中,包装类(如Integer、Double、Boolean等)是基本数据类型(如int、double、boolean等)的对应类。这些类提供了许多有用的方法来操作这些基本数据类型,并且允许你在需要对象的地方(例如在集合中)使用基本数据类型。Java 5引入了自动装箱(autoboxing)和自动拆箱(autounboxing)的功能,这两个功能大大简化了基本数据类型与包装类之间的转换。原创 2024-05-22 13:17:54 · 645 阅读 · 0 评论 -
抽象类和接口的区别
先仔细看看分割线上的内容,这部分更加细致,分割线下的是精华总结。抽象类和接口在Java中都是用于实现抽象概念的工具,但它们之间存在一些重要的区别。原创 2024-05-22 13:16:37 · 514 阅读 · 0 评论 -
Java基本数据类型和引用类型
在Java中,数据类型主要分为两大类:基本数据类型(Primitive Data Types)和引用类型(Reference Types)。这两类数据类型在内存中的存储方式和操作方式上有所不同。原创 2024-05-22 13:15:21 · 491 阅读 · 0 评论 -
Java几种锁介绍?在什么场景下使用?
【代码】Java几种锁介绍?在什么场景下使用?原创 2024-05-21 16:34:26 · 590 阅读 · 0 评论 -
Java中Volatile关键字及其原理
volatile关键字在Java中是一种轻量级的同步机制,主要用于解决多线程环境下的变量可见性和指令重排序问题。原创 2024-05-21 16:33:53 · 978 阅读 · 0 评论 -
Java 的集合类简述
ArrayList类型:List接口的实现类。特点:ArrayList底层使用可变大小的数组实现,这意味着它提供了快速的随机访问(通过索引访问元素),但是插入和删除元素(尤其是中间的元素)可能相对较慢,因为它可能需要移动后续的元素来保持数组的连续性。适用场景:当你需要频繁地访问元素,而插入和删除操作相对较少时,ArrayList是一个很好的选择。LinkedList类型:List接口的实现类。特点:LinkedList采用双向链表结构,每个节点包含对前后节点的引用。原创 2024-05-18 14:35:57 · 938 阅读 · 0 评论 -
== 和 equals 比较的区别
用途差异:==主要用来比较基本类型的值或者判断两个引用是否指向同一对象。equals()则更多地用于比较两个对象的内容是否相等。可重写性:equals()方法可以被重写以提供特定于类的比较逻辑,从而比较对象的内在属性是否相等。而==的操作符是固定的,不能被重写。使用建议:在比较对象内容是否相等时,优先考虑使用equals()方法,特别是当你处理的是已经重写了equals()方法的类(如String)的实例时。而对于基本类型的值比较或者确切地需要比较对象引用是否相同时,使用==。原创 2024-05-17 12:29:54 · 409 阅读 · 0 评论 -
Java多线程编程是什么?在实际开发场景中用来干什么?
Java多线程编程是指在一个Java程序中同时运行多个线程,每个线程都可以执行不同的任务。多线程编程可以显著提高程序的性能和响应能力,尤其是在处理大量并发请求或执行需要等待的操作(如I/O操作)时。原创 2024-05-20 15:29:31 · 502 阅读 · 1 评论 -
redis序列化和java序列化的区别
但是,在Java中使用Redis时,你可能会使用像Jedis或Lettuce这样的库,这些库提供了序列化和反序列化的工具或钩子,以便你可以更容易地在Java对象和Redis字符串之间转换。当你想在Redis中存储Java对象时,你需要将这些对象序列化为某种格式(如JSON、XML、二进制等),然后将这些序列化后的数据作为字符串存储在Redis中。Java序列化是将一个Java对象的状态转换为字节流,以便它可以被写入到持久化存储中(如文件或数据库)或者在网络中传输到另一个运行Java的虚拟机上。原创 2024-05-20 14:58:39 · 466 阅读 · 1 评论 -
一篇看懂Java中String、StringBuffer 和 StringBuilder的含义和区别
String 是不可变的,这意味着每次当你对 String 进行修改操作(如拼接)时,都会创建一个新的 String 对象(创建新的对象在意味着在内存空间中消耗一定的内存,在开发大型项目时,需要尽量避免消耗内存空间的操作)。由于没有同步开销,因此在单线程应用中通常比 StringBuffer 更快。StringBuilder 与 StringBuffer 非常相似,但它是。它提供了修改字符串内容的方法,而。原创 2024-05-19 00:18:56 · 386 阅读 · 0 评论 -
一篇明白什么是Java 重写(Override)与重载(Overload)
先认真阅读重载和重写的意思和区别,再看下面的代码,很容易理解的。Java中的重写(Override)和重载(Overload)是面向对象编程中实现多态性的两种重要机制,但它们的作用和应用场景有所不同。原创 2024-05-19 00:17:07 · 1055 阅读 · 0 评论 -
Java中static关键字的作用
由于静态成员(变量和方法)属于类本身,而不是类的实例,因此过度使用static可能会导致程序的设计变得复杂和难以维护。在设计程序时,应该谨慎考虑何时使用static关键字。原创 2024-05-16 16:29:32 · 474 阅读 · 0 评论 -
final关键字有哪些作用?
在Java中,final关键字是一个非常重要的修饰符,它有以下几个主要作用:finalfinalfinalStringfinalfinalfinal。原创 2024-05-17 15:39:00 · 456 阅读 · 0 评论 -
为什么重写equals方法时还要重写hashCode方法?
当您重写equals()方法来定义对象间的相等性时(即根据业务逻辑判断两个对象是否“相等”),如果没有同时重写hashCode()方法,可能会导致违反上述原则,尤其是在使用哈希表的集合类中出现问题。因为需要保持equals()和hashCode()之间的约定一致,以确保类在哈希表(如HashMap、HashSet等)中的正确行为。原创 2024-05-16 15:45:33 · 420 阅读 · 0 评论 -
为什么出现 4.0 - 3.6 = 0.40000001 这种现象?
这两种类型都遵循IEEE 754标准来表示浮点数,这是一种二进制浮点数表示法。在二进制系统中,许多十进制的小数无法精确表示为有限位的二进制小数,就像十进制系统中1/3无法精确表示一样。这种表示上的近似性导致了浮点运算时可能出现微小的误差。的现象,是因为浮点数在计算机中的表示方式和运算过程中引入的精度误差。的二进制浮点数相减,其结果也是一个接近但不完全等于。进行计算时,实际上是两个接近但不完全等于。在二进制中不能精确表示,所以当你用。的浮点数,这就解释了为何结果会是。在Java中,浮点数运算出现如。原创 2024-05-18 12:12:27 · 333 阅读 · 0 评论