Java 核心知识要点:集合框架、IO、多线程、网络编程及相关特性全解析

Java 集合框架

  • 概述:Java 集合框架提供了一套用于存储、操作和管理对象组的接口和类。它位于 java.util 包下,能方便地实现对数据的各种处理需求,比如增删改查等操作。
  • 主要接口与实现类
    • List:有序、可重复的集合,常见实现类有 ArrayList(基于数组实现,随机访问快)、LinkedList(基于链表实现,插入删除操作在特定场景更高效)。
    • Set:无序、不可重复的集合,例如 HashSet(依靠哈希表实现去重)、TreeSet(可实现元素的自然排序或自定义排序)。
    • Map:以键值对形式存储数据,像 HashMap(哈希表实现,查询效率高)、TreeMap(可按键排序)等。

File、字符集、IO 流

  • File 类:用于操作文件和目录路径相关信息,可进行创建、删除、获取文件属性(如大小、修改时间等)操作,但不能直接读写文件内容。例如可以通过 File file = new File("path"); 创建一个代表文件或目录的 File 对象,再调用相应方法来操作它。
  • 字符集:用于编码和解码字符,Java 中常用的如 UTF-8GBK 等。在处理文本文件读写等涉及字符转换场景时很关键,比如将字节流按指定字符集解码为字符流来正确读取文本内容。
  • IO 流
    • 分类
      • 按流向分:输入流(从数据源读取数据到程序中)和输出流(将程序中的数据写到目的地)。
      • 按处理数据单位分:字节流(以字节为单位读写数据,如 InputStreamOutputStream 及其子类,可用于处理任意类型文件)和字符流(针对字符数据读写,像 ReaderWriter 及其子类,常用于文本文件操作)。
    • 常用 API:例如 FileInputStream 用于从文件读取字节数据,BufferedReader 可方便地按行读取文本文件内容,配合合适的字符集来处理字符编码转换;输出流方面像 FileOutputStream 用于向文件写字节数据,PrintWriter 方便输出格式化文本等。

多线程

  • 概念:使程序能够同时执行多个任务,提高程序运行效率以及实现并发操作等。Java 中通过 Thread 类和 Runnable 接口来创建和管理线程。
  • 创建方式
    • 继承 Thread:定义子类重写 run 方法,在 run 方法中编写线程执行的逻辑代码,然后创建子类对象并调用 start 方法启动线程。
    • 实现 Runnable 接口:实现 run 方法,将实现该接口的类对象作为参数传递给 Thread 构造函数创建线程对象后启动。
  • 线程同步:为解决多线程并发访问共享资源时可能出现的数据不一致等问题,常用 synchronized 关键字来修饰方法或代码块,确保同一时刻只有一个线程能访问被同步的资源。

网络编程

  • 概述:使不同主机上的程序能够通过网络进行通信交流。Java 提供了基于 Socket(套接字)的网络编程机制。
  • 基本通信模式
    • 基于 TCP 协议:可靠的、面向连接的通信协议,通过 ServerSocket 在服务器端监听端口,客户端使用 Socket 建立连接后进行双向的数据交互,通信过程中数据按顺序、无差错地传输,适用于对数据准确性要求高的场景,比如文件传输、网页浏览等。
    • 基于 UDP 协议:无连接、不可靠的协议,发送端通过 DatagramSocket 发送 DatagramPacket(数据报),接收端接收数据报,速度相对较快,适用于对实时性要求高、允许一定丢包情况的场景,如视频直播等。

反射、注解、代理模式

  • 反射:Java 反射机制允许程序在运行时动态地获取类的信息、创建对象、调用方法、访问属性等。通过 Class 类作为入口,比如可以用 Class.forName("className") 获取类的 Class 对象,进而利用该对象调用 newInstance 方法创建实例、通过 getMethod 等方法获取方法对象并调用方法,常用于框架开发等场景,像 Spring 框架依赖注入的实现就借助了反射。
  • 注解:是一种代码级别的说明,用于为程序元素(类、方法、变量等)添加元数据信息。例如 @Override 注解用于标识方法重写,自定义注解可以根据业务需求定义,然后通过反射机制在运行时解析这些注解来执行相应逻辑,常用于配置管理、验证等方面。
  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问。Java 中实现代理有静态代理(手动创建代理类实现和目标类相同接口并在代理类中调用目标类方法前后添加额外逻辑)和动态代理(通过 Proxy 类和 InvocationHandler 接口在运行时动态生成代理类,更灵活,常用于 AOP(面向切面编程)等场景,比如在方法调用前后添加日志记录、事务控制等通用逻辑)。
posted @ 2024-12-18 17:00  软件职业规划  阅读(7)  评论(0编辑  收藏  举报