Java复习日记 - 第一天:重拾Java基础

🎯 今日学习目标

今天是系统复习Java的第一天,主要目标是重新梳理Java语言基础,巩固面向对象编程的核心概念。

📚 学习内容总结

1. Java程序结构重温

java 复制代码
// 重新认识了Java程序的基本结构
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java复习之路!");
    }
}

感悟:看似简单的结构,其实体现了Java的严谨性 - 每个文件一个public类,main方法作为程序入口。

2. 数据类型深度理解

今天重点复习了基本数据类型和引用类型的区别:

关键收获

  • 基本数据类型直接存储值,在栈内存中分配
  • 引用类型存储的是对象的引用,实际对象在堆内存中
  • String虽然是类,但有特殊性(字符串常量池)
java 复制代码
// 实践练习
int a = 10;          // 基本类型,直接存储值
String str = "Hello"; // 引用类型,存储的是地址引用

3. 面向对象编程核心概念

封装的重要性

java 复制代码
// 重新理解了封装的真正意义
public class Student {
    private String name;  // 私有化,保护数据
    private int age;
    
    // 通过公共方法访问,可以添加控制逻辑
    public void setAge(int age) {
        if (age > 0 && age < 150) {
            this.age = age;
        } else {
            throw new IllegalArgumentException("年龄不合法");
        }
    }
}

思考:封装不仅仅是把字段私有化,更重要的是通过方法暴露安全的数据访问方式。

继承的深入理解

今天重新认识到继承的几个要点:

  • 子类拥有父类的非私有属性和方法
  • 构造方法不会被继承
  • Java是单继承,但可以通过接口实现多继承效果

多态的实际应用

java 复制代码
// 多态的威力在于程序的可扩展性
Animal animal = new Dog();  // 编译时类型是Animal,运行时类型是Dog
animal.eat();  // 实际调用的是Dog的eat方法

心得:多态让程序更灵活,符合"开闭原则" - 对扩展开放,对修改关闭。

💡 重点难点解析

1. 值传递 vs 引用传递

今天终于彻底搞明白了Java的参数传递机制:

java 复制代码
public class PassByValueDemo {
    public static void main(String[] args) {
        int num = 10;
        changeValue(num);  // 传递的是值的拷贝
        System.out.println(num);  // 输出10,原值不变
        
        Student stu = new Student("Tom");
        changeReference(stu);  // 传递的是引用的拷贝
        System.out.println(stu.getName());  // 输出Jerry
    }
    
    public static void changeValue(int x) {
        x = 20;
    }
    
    public static void changeReference(Student student) {
        student.setName("Jerry");  // 修改的是同一对象
    }
}

关键理解:Java中都是值传递,对于引用类型,传递的是引用的副本,但指向的是同一个对象。

2. == 和 equals() 的区别

java 复制代码
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1 == str2);      // true,同一常量池对象
System.out.println(str1 == str3);      // false,不同对象
System.out.println(str1.equals(str3)); // true,内容相同

总结:== 比较内存地址,equals() 比较对象内容。

🔄 学习中的困惑与解决

遇到的问题:

在复习抽象类和接口时,对两者的使用场景有些混淆。

解决方案:

通过对比表格理清了区别:

特性 抽象类 接口
方法实现 可以有具体方法 JDK8前只能有抽象方法
变量 可以有各种变量 默认public static final
构造方法
继承 单继承 多实现
设计目的 代码复用 定义行为规范

应用场景

  • 抽象类:is-a关系,模板方法模式
  • 接口:has-a关系,定义能力

📋 实践练习

今天完成的编码练习:

java 复制代码
// 综合练习:员工管理系统基础类设计
public abstract class Employee {
    private String name;
    private int id;
    
    public Employee(String name, int id) {
        this.name = name;
        this.id = id;
    }
    
    // 抽象方法,子类必须实现
    public abstract double calculateSalary();
    
    // 具体方法
    public void displayInfo() {
        System.out.println("员工ID: " + id + ", 姓名: " + name);
    }
}

// 经理类
class Manager extends Employee {
    private double bonus;
    
    public Manager(String name, int id, double bonus) {
        super(name, id);
        this.bonus = bonus;
    }
    
    @Override
    public double calculateSalary() {
        return 8000 + bonus;  // 基础工资+奖金
    }
}

🌟 今日收获

  1. 巩固了基础:重新梳理了Java语法和OOP概念
  2. 解决了疑惑:彻底理解了参数传递机制
  3. 建立了知识联系:将离散的知识点串联成体系
  4. 实践验证理论:通过编码加深理解

📅 明日计划

  1. 复习集合框架(List、Set、Map)
  2. 学习异常处理机制
  3. 开始接触多线程基础概念
  4. 完成相关的编码练习

✨ 学习感悟

"温故而知新",今天重新学习Java基础,发现了很多之前忽略的细节。编程语言的学习就像建房子,基础不牢,地动山摇。每一个简单的概念背后,都蕴含着重要的编程思想。

明天继续加油!🚀


学习时间:3小时
代码行数:约200行
掌握程度:85%

相关推荐
无责任此方_修行中21 小时前
一行代码的“法律陷阱”:开发者必须了解的开源许可证知识
前端·后端·开源
合作小小程序员小小店21 小时前
web网页开发,在线物流管理系统,基于Idea,html,css,jQuery,jsp,java,SSM,mysql
java·前端·后端·spring·intellij-idea·web
用户21411832636021 天前
Claude Skills 新玩法:用 skill-creator 10 分钟搞定 Excel 报表自动化,职场人必学
后端
東雪木1 天前
Spring Boot 2.x 集成 Knife4j (OpenAPI 3) 完整操作指南
java·spring boot·后端·swagger·knife4j·java异常处理
天使街23号1 天前
go-dongle v1.2.0 发布,新增 SM2 非对称椭圆曲线加密算法支持
开发语言·后端·golang
用户69371750013841 天前
Kotlin 协程基础入门系列:从概念到实战
android·后端·kotlin
Moonbit1 天前
MoonBit Pearls Vol.14:哈希表避坑指南
后端·算法·编程语言
Moonbit1 天前
MoonBit Pearls Vol.13: 使用 MoonBit 开发一个 HTTP 文件服务器
服务器·后端·http
一 乐1 天前
个人博客|博客app|基于Springboot+微信小程序的个人博客app系统设计与实现(源码+数据库+文档)
java·前端·数据库·spring boot·后端·小程序·论文
LucianaiB1 天前
Qoder 降价,立即生效!首购 2 美金/月
后端