Java学习笔记:从包装类到互斥锁,集合与多线程

需积分: 0 3 下载量 150 浏览量 更新于2024-06-26 1 收藏 20.27MB DOCX 举报
"这篇笔记涵盖了Java编程中的多个关键知识点,包括包装类、String类、字符串操作、StringBuffer、Math类、Arrays类、System类、日期类、集合框架、泛型、JUnit以及多线程基础,特别是对互斥锁的概念进行了讨论。笔记适合老手复习,新手学习,并提供了在实际开发中选择集合实现类的总结。" 详细内容: 1. 包装类:Java中的八大基本数据类型(如int、char等)都有对应的包装类,如Integer、Character等。这些包装类提供了更多的方法和功能。装箱是将基本类型转换为对应的包装类型,拆箱则相反。JDK 5以后,编译器支持自动装箱和拆箱,使得操作更加便捷。Integer类中,-128到127之间的整数会缓存,再次创建时直接返回,以提高性能。 2. String类:String是不可变对象,其特性包括不可修改、线程安全。常见的方法有concat()、substring()、indexOf()、equals()、trim()等。字符串常量池是存放字符串的区域,可以优化内存使用。 3. StringBuffer类:线程安全的字符串操作类,适合在多线程环境中进行字符串拼接。与StringBuilder相比,效率较低,但在并发环境下更可靠。 4. Math类:提供各种数学运算,如max()、min()、random()等。 5. Arrays类:提供了静态方法用于排序、比较和复制数组,如sort()、equals()。 6. System类:包含一些系统相关的属性和方法,如currentTimeMillis()获取当前时间,exit()退出JVM。 7. 日期类:包括Date、Calendar和Java 8引入的LocalDate、LocalTime等,分别代表不同时间模型。 8. 集合框架:Collection接口是最顶层接口,包括List和Set两个主要分支。ArrayList和LinkedList分别是基于动态数组和链表实现的List接口的实现类,各有优缺点,如ArrayList适合随机访问,LinkedList适合插入和删除。Set接口不包含重复元素,有HashSet和TreeSet等实现类。 9. Map接口:存储键值对的数据结构,有HashMap、TreeMap等实现类。 10. 泛型:增强了代码的类型安全性,允许在定义类、接口和方法时指定类型参数。 11. JUnit:单元测试框架,用于编写和执行Java程序的测试。 12. 多线程基础:线程是程序执行的最小单元。互斥锁是线程同步的一种机制,确保同一时刻只有一个线程访问临界区,以避免数据竞争问题。 13. 在开发中选择集合实现类:需要根据具体需求来选择,如是否需要保持插入顺序、是否允许重复元素、性能要求等。例如,ArrayList适合于频繁查找,LinkedList适合于频繁添加和删除,HashSet适合快速查找不重复元素,而TreeSet能保持元素排序。 这篇笔记提供了Java编程中广泛使用的类和接口的概述,以及它们的常见用法,对于理解和掌握Java编程具有很大的帮助。