Java基础全面复盘:从入门到进阶的核心要点梳理

news/2025/10/23 13:13:44/文章来源:https://www.cnblogs.com/syf0824/p/19158948

引言

Java作为一门经典的面向对象编程语言,自1995年诞生以来,始终保持着旺盛的生命力。无论你是刚刚接触Java的初学者,还是希望巩固基础的开发者,进行一次全面的基础复盘都大有裨益。本文将系统性地梳理Java核心知识点,帮助你构建完整的知识体系。

一、Java开发环境搭建

JDK安装与配置

# 检查Java版本
java -version
javac -version# 设置环境变量(示例)
JAVA_HOME=/path/to/jdk
PATH=$JAVA_HOME/bin:$PATH

二、Java基础语法

变量与数据类型

public class DataTypes {public static void main(String[] args) {// 基本数据类型byte b = 127;           // 8位short s = 32767;        // 16位int i = 2147483647;     // 32位long l = 9223372036854775807L;  // 64位float f = 3.14f;        // 32位浮点double d = 3.1415926535; // 64位浮点char c = 'A';           // 16位Unicodeboolean bool = true;    // 1位// 引用数据类型String str = "Hello Java";int[] array = {1, 2, 3};}
}

运算符详解

public class Operators {public static void main(String[] args) {int a = 10, b = 3;// 算术运算符System.out.println(a + b);  // 13System.out.println(a - b);  // 7System.out.println(a * b);  // 30System.out.println(a / b);  // 3System.out.println(a % b);  // 1// 关系运算符System.out.println(a > b);   // trueSystem.out.println(a == b);  // false// 逻辑运算符boolean x = true, y = false;System.out.println(x && y);  // falseSystem.out.println(x || y);  // trueSystem.out.println(!x);      // false// 三元运算符int max = (a > b) ? a : b;  // 10
    }
}

流程控制结构

public class ControlFlow {public static void main(String[] args) {// if-else语句int score = 85;if (score >= 90) {System.out.println("优秀");} else if (score >= 80) {System.out.println("良好");  // 输出这个} else {System.out.println("及格");}// switch语句int day = 3;switch (day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");  // 输出这个break;default:System.out.println("其他");}// 循环结构for (int i = 0; i < 5; i++) {System.out.println("for循环: " + i);}int j = 0;while (j < 3) {System.out.println("while循环: " + j);j++;}int k = 0;do {System.out.println("do-while循环: " + k);k++;} while (k < 3);}
}

三、面向对象编程

类与对象

// 类的定义
public class Person {// 字段(属性)private String name;private int age;// 构造方法public Person() {this.name = "未知";this.age = 0;}public Person(String name, int age) {this.name = name;this.age = age;}// 方法public void introduce() {System.out.println("我叫" + name + ",今年" + age + "岁");}// Getter和Setterpublic String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {if (age >= 0) {this.age = age;}}
}// 使用类
public class OOPDemo {public static void main(String[] args) {Person person1 = new Person();Person person2 = new Person("张三", 25);person1.introduce();  // 我叫未知,今年0岁person2.introduce();  // 我叫张三,今年25岁
    }
}

三大特性:封装、继承、多态

// 封装示例
public class BankAccount {private double balance;public void deposit(double amount) {if (amount > 0) {balance += amount;}}public boolean withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;return true;}return false;}public double getBalance() {return balance;}
}// 继承示例
class Animal {protected String name;public Animal(String name) {this.name = name;}public void eat() {System.out.println(name + "在吃东西");}
}class Dog extends Animal {public Dog(String name) {super(name);}public void bark() {System.out.println(name + "在汪汪叫");}// 方法重写
    @Overridepublic void eat() {System.out.println(name + "在吃狗粮");}
}// 多态示例
public class PolymorphismDemo {public static void main(String[] args) {Animal myAnimal = new Dog("旺财");myAnimal.eat();  // 旺财在吃狗粮 - 多态的表现
    }
}

抽象类与接口

// 抽象类
abstract class Shape {protected String color;public Shape(String color) {this.color = color;}// 抽象方法public abstract double calculateArea();// 具体方法public void displayColor() {System.out.println("颜色: " + color);}
}class Circle extends Shape {private double radius;public Circle(String color, double radius) {super(color);this.radius = radius;}@Overridepublic double calculateArea() {return Math.PI * radius * radius;}
}// 接口
interface Flyable {void fly();  // 隐式抽象方法default void takeOff() {  // 默认方法System.out.println("准备起飞");}static void showFeature() {  // 静态方法System.out.println("可以飞行");}
}interface Swimmable {void swim();
}// 实现多个接口
class Duck implements Flyable, Swimmable {@Overridepublic void fly() {System.out.println("鸭子在飞行");}@Overridepublic void swim() {System.out.println("鸭子在游泳");}
}

四、异常处理

异常体系结构

public class ExceptionHandling {public static void main(String[] args) {// try-catch-finallytry {int result = divide(10, 0);System.out.println("结果: " + result);} catch (ArithmeticException e) {System.out.println("捕获算术异常: " + e.getMessage());} catch (Exception e) {System.out.println("捕获其他异常: " + e.getMessage());} finally {System.out.println("finally块总是执行");}// 抛出异常try {checkAge(15);} catch (IllegalArgumentException e) {System.out.println(e.getMessage());}}public static int divide(int a, int b) {return a / b;}public static void checkAge(int age) {if (age < 18) {throw new IllegalArgumentException("年龄必须大于等于18岁");}System.out.println("年龄验证通过");}
}// 自定义异常
class InsufficientBalanceException extends Exception {public InsufficientBalanceException(String message) {super(message);}
}class BankAccount {private double balance;public void withdraw(double amount) throws InsufficientBalanceException {if (amount > balance) {throw new InsufficientBalanceException("余额不足,当前余额: " + balance);}balance -= amount;}
}

五、集合框架

常用集合类

import java.util.*;public class CollectionDemo {public static void main(String[] args) {// List接口 - 有序可重复List<String> arrayList = new ArrayList<>();arrayList.add("Apple");arrayList.add("Banana");arrayList.add("Apple");  // 允许重复
        List<String> linkedList = new LinkedList<>();linkedList.add("Cat");linkedList.add("Dog");// Set接口 - 无序不重复Set<String> hashSet = new HashSet<>();hashSet.add("Red");hashSet.add("Green");hashSet.add("Red");  // 不会重复添加
        Set<String> treeSet = new TreeSet<>();treeSet.add("Zoo");treeSet.add("Apple");treeSet.add("Banana");// 自动排序: [Apple, Banana, Zoo]// Map接口 - 键值对Map<String, Integer> hashMap = new HashMap<>();hashMap.put("Alice", 25);hashMap.put("Bob", 30);hashMap.put("Alice", 26);  // 更新值
        Map<String, Integer> treeMap = new TreeMap<>();treeMap.put("Orange", 5);treeMap.put("Apple", 3);treeMap.put("Banana", 7);// 按键排序: {Apple=3, Banana=7, Orange=5}// 遍历集合for (String fruit : arrayList) {System.out.println(fruit);}for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}}
}

六、输入输出流

文件操作

import java.io.*;
import java.nio.file.*;public class IODemo {public static void main(String[] args) {// 使用File类File file = new File("test.txt");try {// 创建文件if (file.createNewFile()) {System.out.println("文件创建成功");}// 写入文件FileWriter writer = new FileWriter(file);writer.write("Hello Java IO\n");writer.write("这是第二行");writer.close();// 读取文件FileReader reader = new FileReader(file);BufferedReader bufferedReader = new BufferedReader(reader);String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}bufferedReader.close();} catch (IOException e) {e.printStackTrace();}// 使用NIO (Java 7+)try {Path path = Paths.get("test_nio.txt");Files.write(path, Arrays.asList("第一行", "第二行", "第三行"),StandardCharsets.UTF_8);List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);for (String text : lines) {System.out.println(text);}} catch (IOException e) {e.printStackTrace();}}
}

七、多线程编程

线程创建与同步

public class ThreadDemo {public static void main(String[] args) {// 继承Thread类MyThread thread1 = new MyThread();thread1.start();// 实现Runnable接口Thread thread2 = new Thread(new MyRunnable());thread2.start();// 使用Lambda表达式Thread thread3 = new Thread(() -> {for (int i = 0; i < 5; i++) {System.out.println("Lambda线程: " + i);}});thread3.start();// 线程同步示例Counter counter = new Counter();Thread t1 = new Thread(() -> {for (int i = 0; i < 1000; i++) {counter.increment();}});Thread t2 = new Thread(() -> {for (int i = 0; i < 1000; i++) {counter.increment();}});t1.start();t2.start();try {t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("最终计数: " + counter.getCount());}
}class MyThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 5; i++) {System.out.println("继承Thread: " + i);}}
}class MyRunnable implements Runnable {@Overridepublic void run() {for (int i = 0; i < 5; i++) {System.out.println("实现Runnable: " + i);}}
}// 线程安全计数器
class Counter {private int count = 0;public synchronized void increment() {count++;}public int getCount() {return count;}
}

八、Java新特性

Java 8+ 重要特性

import java.util.*;
import java.util.stream.*;
import java.time.*;public class NewFeatures {public static void main(String[] args) {// Lambda表达式List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 传统方式Collections.sort(names, new Comparator<String>() {@Overridepublic int compare(String a, String b) {return a.compareTo(b);}});// Lambda方式Collections.sort(names, (a, b) -> a.compareTo(b));// Stream APIList<String> filteredNames = names.stream().filter(name -> name.startsWith("A")).map(String::toUpperCase).collect(Collectors.toList());System.out.println(filteredNames);  // [ALICE]// 方法引用
        names.forEach(System.out::println);// Optional类 - 避免空指针异常Optional<String> optionalName = Optional.ofNullable(getName());String result = optionalName.orElse("默认名称");System.out.println(result);// 新的日期时间APILocalDate today = LocalDate.now();LocalTime now = LocalTime.now();LocalDateTime currentDateTime = LocalDateTime.now();System.out.println("今天: " + today);System.out.println("现在: " + now);System.out.println("当前日期时间: " + currentDateTime);// 日期计算LocalDate nextWeek = today.plusWeeks(1);Period period = Period.between(today, nextWeek);System.out.println("下周: " + nextWeek);System.out.println("间隔: " + period.getDays() + "天");}private static String getName() {return Math.random() > 0.5 ? "张三" : null;}
}

Java的世界博大精深,基础扎实才能在编程道路上走得更远。希望这篇复盘文章能帮助你巩固Java基础,为后续的深入学习打下坚实基础!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32H743IIT6 系列】通过 LTDC接口驱动的 TFTLCD(RGB屏)显示

前言 SDRAM 配置 在开始此篇文章之前,首先要把 SDRAM 配置好,可以看我的上一篇文章:【STM32H743IIT6 系列】将外部SDRAM作为内部RAM使用的超简单方法没有将 SDRAM 作为内部 RAM 使用的朋友可以选择性看上面这篇文章…

10.22 —— 2024icpc沈阳D,E,B,M

D. Dot Product Game 首先将对两个数组的操作转变为对一个数组的操作:可以发现,对 \(a\) 的某个子数组循环左移 \(r\) 位 与 对 \(b\) 的某个子数组循环右移 \(r\) 位是等价的,因此修改某个情形,只需要对其中一个序…

AGV 系统的内部物流与装配智能化方案设计:应用场景与核心优势详解 - 实践

AGV 系统的内部物流与装配智能化方案设计:应用场景与核心优势详解 - 实践2025-10-23 12:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

报表过滤框设置默认组织提示死循环

原因:首次赋值当前组织时,BeforeSetItemValueByNumber中过滤范围权限,导致赋值失败,组织字段重新为空,又触发值更新,再次赋值。 解决:实体服务规则中不勾选“值更新”,即值更新时不触发。

第九章-NOP Team dmz-C

第九章-NOP Team dmz-C 1、攻击者通过攻击DMZ-B机器发现有密钥可以免密登录到DMZ-C机器里,,然后攻击者上传了一个挖矿程序,请将该挖矿程序的名称提交, 我们使用DMZ-B下载的私钥进行登录查看当前pytho版本启用交互式…

高级语言设计第二次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/13570 学号:102500309 姓名:郑睿杰 一、课后练习:(具体思路都在代…

UiPath License

UiPath Lincense: 22年之前,一个独立的OC license官价是2万美金。 22年到25年, UiPath推行了一套Flex的license类型,特点是OC可以免费安装使用,但各个独立的产品license的价格做了上调,比如attened robot, unatte…

一些变换

这篇文章主要是做一个总结和铺垫。 我们做物理题时,常常要解一些复杂的微分方程(便便),但是我们对方程做一些变换往往会使微分方程变成线性方程,这是好的,于是专门研究一些变换是重要的。 一些记号 \[\begin{ali…

ANOMALYCLIP

对象无关的零样本异常检测 创新点有三个:(1)对象不可知文本提示关注图像的异常/正常,而不是对象语义;(2)文本编码器调优来优化原始文本空间;(3)DPAM(V-V)通过增强局部视觉语义来提高分割性能。 论文主要用…

vue项目浏览器内存不断增加

项目中用的jeecg-boot,排除其他内存泄漏的原因,最后发现将右侧点击组件Contextmenu改为v-if显示,内存就降下去了

基于伪距差分定位技术实现方案

基于伪距差分定位技术实现方案,包含原理详解与C++代码实现,结合差分修正与最小二乘解算算法一、定位原理详解 1.1 差分定位基本原理 核心原理:基准站已知精确坐标,计算伪距观测值与真实几何距离的差值(Δρ) 通过…

prometheus服务的客户端

prometheus服务的客户端环境 服务端 192.168.164.110 客户端 192.168.164.1111 添加主机到prometheus服务 # 客户端运行node-exporter docker run -itd \ -p 9100:9100 \ -v /:/rootfs:ro \ -v /sys:/sys:ro \ --name…

AI 辅助开发工具

一、引言:为什么 AI 辅助开发越来越重要?提升开发效率(代码生成、调试、文档) 降低认知负荷(自动补全、上下文理解) 加速学习新技术(解释代码、生成示例) 趋势:AI 成为现代开发者“第二大脑”二、主流 AI 辅助…

网安人必看!2025年最硬核的20+变现路径,学生党也能月入4位数。 - 详解

网安人必看!2025年最硬核的20+变现路径,学生党也能月入4位数。 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: …

SightAI 企业级实战:构建高可用、低成本的 AI 应用架构 - sight

在 AI 技术飞速发展的当下,不少开发者已能熟练运用 SightAI 完成个人开发项目。然而,当 AI 应用从个人开发场景迈向企业生产环境时,一系列新的挑战便随之而来,稳定性、成本、安全与合规成为企业必须攻克的难关。本…

应用安全 --- 安卓加固 之 软件安装白名单

应用安全 --- 安卓加固 之 软件安装白名单有些软件会在手机或pda中限制安装其他软件来保证自身软件安全。

应用安全 --- 安卓加固 之 软件安装白名单

应用安全 --- 安卓加固 之 软件安装白名单有些软件会在手机或pda中限制安装其他软件来保证自身软件安全。

Go开发者必备:5款提升代码质量的顶级Linter工具

https://baijiahao.baidu.com/s?id=1840292747265997661&wfr=spider&for=pc

函数作用域在解决 JavaScript 自定义元素类跨环境兼容问题中的应用

JavaScript 自定义元素类作为 Web Components 标准的核心组成部分,其跨环境兼容性依赖于对作用域规则的深刻理解与灵活运用。函数作用域作为 JavaScript 中变量可访问范围的基本划分单位,直接影响自定义元素类在不同…

零知IDE——基于STM32F407VET6和雨滴传感器的多界面TFT降雨监测显示系统 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …