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%

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP