Java 细节梳理

本文详细介绍了 Java 中 Iterator 接口的使用方法,包括 next() 和 hasNext() 方法的具体应用。通过示例代码展示了如何遍历 List 集合中的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. next()函数先把指针指向下一个位置,然后返回所指的值。
    hasNext()判断下一个位置是否比容器的容量大。
     Iterator<String> ite=list.iterator();
     while(ite.hasNext()){
         System.out.println(ite.next());
     }
Java 基础知识是 Java 开发的根基,掌握扎实的基础对于后续学习框架、架构、分布式系统等都至关重要。下面我将从语言基础、面向对象、集合框架、异常处理、多线程与并发、IO/NIO、JVM基础等几个方面进行梳理。 --- ## 一、Java 语言基础 ### 1. 数据类型与变量 Java 是强类型语言,变量必须声明类型。分为两大类: - **基本数据类型(8种)**: - 整型:`byte`(8位)、`short`(16位)、`int`(32位)、`long`(64位) - 浮点型:`float`(32位)、`double`(64位) - 字符型:`char`(16位 Unicode) - 布尔型:`boolean` - **引用数据类型**: - 类(`String`、自定义类) - 接口 - 数组 - 枚举 ### 2. 运算符 - 算术运算符:`+`、`-`、`*`、`/`、`%` - 赋值运算符:`=`, `+=`, `-=` - 比较运算符:`==`, `!=`, `>`, `<` - 逻辑运算符:`&&`、`||`、`!` - 位运算符:`&`、`|`、`^`、`~`、`<<`、`>>` ### 3. 流程控制 - 分支:`if-else`、`switch-case` - 循环:`for`、`while`、`do-while` - 跳转:`break`、`continue`、`return` --- ## 二、面向对象编程(OOP) ### 1. 类与对象 类是对象的模板,对象是类的具体实例。 ```java class Person { String name; int age; void sayHello() { System.out.println("Hello, I'm " + name); } } ``` ### 2. 构造方法 构造方法用于初始化对象,方法名与类名相同,无返回值。 ```java public Person(String name, int age) { this.name = name; this.age = age; } ``` ### 3. 封装、继承、多态 - **封装**:隐藏内部细节,对外提供访问接口(getter/setter) - **继承**:子类继承父类的属性和方法(`extends`) - **多态**:一个接口,多种实现(通过方法重写和向上转型实现) ```java Animal a = new Cat(); a.speak(); // 调用Cat的speak() ``` ### 4. 抽象类与接口 - **抽象类**:不能实例化,可以有抽象方法(`abstract`) - **接口**:定义行为规范(`interface`),Java 8后支持默认方法和静态方法 --- ## 三、常用类库与API ### 1. String、StringBuffer、StringBuilder - `String`:不可变字符串 - `StringBuffer`:线程安全的可变字符串 - `StringBuilder`:非线程安全,性能更高 ### 2. Math、Random、System - `Math`:数学运算工具类 - `Random`:生成随机数 - `System`:系统相关操作(如`System.out.println`) ### 3. 包装类(Wrapper) 基本类型对应的引用类型,如 `Integer`、`Double`、`Boolean`,支持自动装箱拆箱。 ```java Integer i = 100; // 自动装箱 int j = i; // 自动拆箱 ``` --- ## 四、集合框架(Collection & Map) ### 1. Collection 接口体系 - **List**:有序、可重复(如 `ArrayList`、`LinkedList`) - **Set**:无序、不可重复(如 `HashSet`、`TreeSet`) - **Queue**:队列结构(如 `LinkedList`、`PriorityQueue`) ### 2. Map 接口 - **HashMap**:非线程安全,key-value结构 - **TreeMap**:按键排序 - **ConcurrentHashMap**:线程安全 ```java Map<String, Integer> map = new HashMap<>(); map.put("a", 1); map.get("a"); ``` --- ## 五、异常处理(Exception) Java 异常分为: - **Error**:JVM 错误,如 `OutOfMemoryError` - **Exception**: - **checked exception**:编译时必须处理,如 `IOException` - **unchecked exception**:运行时异常,如 `NullPointerException` 使用 `try-catch-finally` 捕获异常: ```java try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("除数不能为0"); } finally { // 无论如何都会执行 } ``` --- ## 六、多线程与并发 ### 1. 创建线程的方式 - 继承 `Thread` 类 - 实现 `Runnable` 接口 - 使用 `Callable` 和 `FutureTask` - 使用线程池(推荐) ```java new Thread(() -> { System.out.println("Hello from thread"); }).start(); ``` ### 2. 线程同步 - 使用 `synchronized` 关键字 - 使用 `ReentrantLock` - 使用 `volatile` 关键字保证可见性 ### 3. 线程池 使用 `ExecutorService` 创建线程池,提高资源利用率: ```java ExecutorService executor = Executors.newFixedThreadPool(5); executor.submit(() -> System.out.println("Task executed")); executor.shutdown(); ``` --- ## 七、IO/NIO ### 1. 传统 IO(InputStream/OutputStream) - 字节流:`FileInputStream`、`FileOutputStream` - 字符流:`FileReader`、`FileWriter` ```java try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } ``` ### 2. NIO(New IO) - `Buffer`:缓冲区 - `Channel`:通道 - `Selector`:多路复用器(用于网络编程) ```java Path path = Paths.get("file.txt"); Files.readLines(path, StandardCharsets.UTF_8).forEach(System.out::println); ``` --- ## 八、JVM 基础知识 ### 1. JVM 内存模型 - 方法区(元空间) - 堆(对象实例) - 栈(方法调用) - 本地方法栈 - 程序计数器 ### 2. 垃圾回收机制(GC) - 垃圾回收算法:标记-清除、复制、标记-整理 - 垃圾回收器:Serial、Parallel、CMS、G1、ZGC ### 3. 类加载机制 - 加载(Loading) - 验证(Verification) - 准备(Preparation) - 解析(Resolution) - 初始化(Initialization) --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值