Java集合框架
未读
Java21特性之顺序集合
Java 21引入了Sequenced Collections,一种有序且线程安全的集合类型,旨在解决多线程环境下处理大量数据的需求。Sequenced Collections具有有序性、线程安全性,并提供了统一的接口和方法。主要包括SequencedCollection、SequencedSet和SequencedMap三个接口,分别继承Collection、Set和Map接口。其使用示例展示了如何添加、获取和遍历集合中的元素,为Java集合框架带来了深远影响。
Java重要知识
未读
Java字符串底层实现改变的原因
Java中`String`的底层从`char[]`转向`byte[]`是为了优化内存使用和增强编码灵活性。早期设计导致内存浪费和编码转换开销,而Java 9引入的紧凑字符串通过使用`byte[]`和编码标识符解决了这些问题。这一转变显著提升了内存效率,减少了GC工作量,并可能提高CPU缓存命中率,同时对开发者透明,保持了API的稳定性。
Java重要知识
未读
一文看懂JDK 8~21 LTS版本的新特性
本文介绍了Java 8至21 LTS版本的新特性。Java 8引入了Lambda表达式、Stream API和Optional类等,Java 11新增了String方法、文件操作方法和局部变量自动推断等,Java 17则恢复了严格的浮点语义、引入了更强大的伪随机数生成器并删除了Applet API,Java 21则带来了虚拟线程、统一有序集合的操作接口和record模式等新特性。这些新特性旨在提高Java编程的效率和安全性,并推动Java技术的发展。
Java语法基础
未读
为什么Java字符串是不可变的
本文探讨了Java字符串不可变性的重要性,主要论据包括:1)保障String对象安全性,防止篡改,如用户名和密码的存储;2)保证哈希值不会频繁变更,提高哈希表等数据结构的性能;3)实现字符串常量池,节省内存。通过示例代码,说明了不可变性如何防止数据篡改,以及哈希值缓存机制,最后强调了字符串操作(如`substring()`和`concat()`)总是生成新对象,而非在原对象上修改。
Java面向对象
未读
Java的instanceof关键字
本文介绍了Java中的instanceof关键字,用于判断对象是否属于指定类型。通过实例代码,阐述了instanceof的用法,包括检查继承关系、接口实现关系以及与Object类的隐式继承。文章还探讨了null对象与instanceof的关系,并展示了如何使用instanceof进行类型判断和强制转换。最后,介绍了JDK 16中instanceof模式匹配的改进,使类型判断更加便捷。
Java面向对象
未读
方法重写Override和方法重载Overload有什么区别?
本文对比了Java中的方法重载和方法重写。方法重载是指在同一类中存在多个名称相同但参数列表不同的方法,以增强代码可读性;而方法重写是指子类具有与父类相同的方法(参数、返回类型、方法名),以实现多态。文章详细介绍了两种方法的重载和重写规则,包括参数个数、类型、继承关系、权限、异常等,以及重写方法中super关键字的用法。最后,文章总结了方法重载和重写时应注意的要点,为开发者提供了清晰的理解和指导。
Java面向对象
未读
Java中的不可变对象
本文介绍了Java中的不可变对象,阐述了不可变对象的概念、优点及其在多线程环境下的应用。通过分析String类和包装器类等不可变类,阐述了不可变对象在常量池、hashcode和线程安全方面的优势。最后,本文通过一个自定义不可变类的实例,演示了如何创建和确保不可变类,并强调了在处理包含可变对象的不可变类时的注意事项。总结来看,不可变对象在Java中具有多种优势,尤其在多线程环境下,能显著提升程序的安全性和性能。