Java SE核心技术:P2知识深度解析

需积分: 11 0 下载量 106 浏览量 更新于2024-08-05 收藏 21KB DOCX 举报
在JavaSE编程中,P2知识总结涵盖了一系列关键的概念和技巧,对于深入理解和应用Java语言至关重要。以下是对这些知识点的详细解释: 1. **`==` 和 `equals` 的区别**: - `==` 是用于比较基本数据类型(如int、char等)的值,如果两个变量指向的是同一个内存位置,则结果为真。 - 对于对象,`equals()` 方法是默认的行为,通常用于比较对象的属性值是否相等。然而,开发者可以在自定义类中重写 `equals()` 方法来实现更复杂的比较逻辑。 2. **日期转换**: - 将日期转换为字符串使用 `Date` 类的 `toString()` 方法,而将字符串转换为日期则通常通过 `SimpleDateFormat` 或 `LocalDate` 类的 `parse()` 方法。 3. **字符串操作**: - `s1 += "world"` 的操作会改变原始 `s1` 变量,因为字符串是不可变的,这里实际上是创建了一个新的字符串对象并将其连接到 `s1`。 4. **`new String()` 和赋值区别**: - `new String("hello")` 创建了一个新的字符串对象,而 `Strings2="hello"` 直接给 `Strings2` 变量赋值,如果没有初始化,两者可能指向不同的对象。 5. **`StringBuilder` 和 `StringBuffer`**: - 两者都是可变字符串容器,`StringBuilder` 在单线程环境下足够用,`StringBuffer` 在多线程环境中提供了同步操作,但性能略低。 6. **自动拆装箱**: - Java提供了一种机制,允许自动将基本类型(如 int、char 等)转换为对应的包装类对象(Integer、Character 等),在操作后自动还原,简化了代码编写。 7. **`Collection` 集合体系**: - `Collection` 是所有集合类的超接口,包括 List(有序,允许重复)、Set(无序,不允许重复)和 Queue(先进先出或先进后出)等,它们遵循统一的接口规范。 8. **泛型的作用**: - 泛型允许在编译时检查类型安全,避免运行时的 ClassCastException,提高代码的可重用性和类型清晰性。 9. **`ArrayList` 遍历方法**: - 有三种常见遍历方式:`for-each` 循环、增强 for 循环和 iterator() 方法。 10. **`List` 子类及其特征**: - 包括 `ArrayList`(动态数组)、`LinkedList`(链表)、`Vector`(同步版本的ArrayList)等,各有不同的性能特点和适用场景。 11. **`Collection` 和 `Collections` 区别**: - `Collection` 是接口,`Collections` 是工具类,提供集合操作的实用函数。 12. **`List` 排序方式**: - 使用 `Collections.sort()` 或者 `list.sort()`,也可以自定义 `Comparator` 进行排序。 13. **默认类型**: - 如果在泛型中不指定,集合中存放的对象默认为 `Object` 类型,可能导致类型不安全。 14. **`Map` 遍历**: - 使用 `entrySet()` 或 `forEach` 循环遍历键值对。 15. **`HashMap` 和 `Hashtable` 区别**: - `HashMap` 是非同步的,而 `Hashtable` 是同步的;`HashMap` 允许 null 键值对,`Hashtable` 不允许。 16. **集合类型的特点和区别**: - `List` 有序,`Set` 无序且不允许重复,`Map` 关联键值对,无序但有唯一键。 17. **错误和异常**: - `Error` 代表系统级严重错误,`Exception` 是程序运行时异常,两者处理方式不同。 18. **异常分类与区别**: - 根据严重程度和来源,异常分为运行时异常和错误,还有受检异常(编译时异常)。 19. **异常处理方式**: - `try-catch` 块捕获和处理异常,`finally` 语句块确保资源清理,`throw` 和 `throws` 关键字用于抛出和声明异常。 20. **`throw` 和 `throws` 的区别**: - `throw` 异常是主动抛出,`throws` 是声明异常但不处理,让调用者负责处理。 21. **捕获异常类型**: - 捕获特定异常、捕获特定类型异常的子类,以及捕获所有异常。 22. **`final`、`finally` 和 `finalize`**: - `final` 修饰变量、方法或类,`finally` 用于代码块中的资源管理,`finalize()` 是对象被垃圾回收前的回调方法。 23. **并发和并行**: - 并发是指多个任务在同一时间段执行,而并行是同时执行多个任务,通常指多核处理器环境下的并行。 24. **`Thread` 类与 `start()` 和 `run()`**: - `Thread` 是线程类,`start()` 启动线程,`run()` 是线程的执行体。 25. **创建多线程方式**: - 继承 `Thread` 类或实现 Runnable 接口,然后创建 Thread 对象并调用 start()。 26. **线程安全问题解决方案**: - 同步代码、使用并发容器(如 ConcurrentHashMap、CopyOnWriteArrayList 等)、锁定关键资源。 27. **`Lock` 锁与 `synchronized` 区别**: - `Lock` 提供更细粒度的锁控制,`synchronized` 是对整个代码块或方法的粗粒度锁。 28. **线程生命周期图**: - 描述线程从创建、运行、阻塞、唤醒、终止等状态的变化过程。 29. **进程和线程区别**: - 进程是独立的程序实例,线程是进程内的一个执行单元,一个进程可以包含多个线程。 30. **`sleep()` 和 `wait()` 方法**: - `sleep()` 让当前线程睡眠一段时间,`wait()` 使当前线程等待某个条件满足。 31. **Lambda 表达式**: - 简化了函数式编程的语法,用于传递行为(匿名函数)给方法。 32. **绝对路径与相对路径**: - 绝对路径是从根目录开始的完整路径,相对路径是从当前工作目录出发的路径。 33. **递归**: - 函数在其定义域内调用自身的过程,解决需要反复分解为相似子问题的问题。 34. **递归注意事项**: - 需要设置基本情况以防止无限递归,确保每次递归都有进步。 35. **I/O 流分类**: - 输入流(如 `InputStream`)和输出流(如 `OutputStream`),字符流和字节流。 36. **I/O 流的顶级父类**: - `InputStream` 和 `OutputStream` 是所有流类的基类。 37. **高效流(缓冲流)**: - `BufferedReader`、`BufferedWriter`、`BufferedInputStream` 和 `BufferedOutputStream`。 38. **软件结构**: - 如 MVC(模型-视图-控制器)架构,分层设计等。 39. **网络通信三要素**: - 发送方、接收方和传输介质(如TCP/IP协议)。 40. **TCP 和 UDP 协议**: - TCP 是面向连接、可靠的数据传输协议,UDP 是无连接、不可靠的协议,适用于实时应用。 这些知识点全面覆盖了Java SE中的基础概念和核心技能,对于准备Java SE考试或进一步提升编程能力非常有帮助。学习和掌握这些内容,将有助于你构建更加稳健和高效的程序。