7.20
一、今日学到内容
- Java 基础规范
public 类名与文件名一致,main 方法是程序唯一入口,三种注释用法。 - 变量与 8 大基础类型
区分局部 / 成员 /static/final 变量,自动、强制类型转换规则。 - 运算符、分支、循环
自增、逻辑短路、三元运算符;if、switch、for/while/do-while,break/continue 作用。 - 数组
固定长度,下标从 0 开始,普通 for 与增强 for 两种遍历。 - 方法与构造
方法格式、重载规则;构造方法用于初始化,有参构造会覆盖默认无参构造。 - Java 独有的、和 C/C++ 差异知识点
1)纯面向对象:所有代码写在类内,无全局函数 / 变量;C/C++ 支持类外代码。
2)无指针,靠引用操作对象,自动 GC 垃圾回收,不用手动 new/delete 释放内存。
3)单继承,靠接口实现多扩展;C++ 支持多继承,无 interface。
4)String 不可变,用 equals 对比内容;C 字符数组、C++string 可变,靠 strcmp 比较。
5)final 关键字:常量、锁方法、禁继承;C/C++ 只有 const,功能单一。
6)private/protected 无友元,强制封装;C++friend 可突破访问限制。
7)try-catch-finally 完整异常体系;C/C++ 靠返回值、简单 catch 处理错误。
8)抽象类 abstract、接口,C/C++ 仅用纯虚函数模拟,无对应关键字。
二、思维层面问题
- C/C++ 惯性思维难扭转,总用指针、全局变量思路写 Java,不适应 GC、无指针设计。
- 面向过程思路根深蒂固,不会用类和对象抽象需求,习惯把所有代码堆在 main 里。
- 混淆 Java 栈 / 堆 / 方法区内存模型,和 C 内存分区弄混,看不懂 == 地址对比底层逻辑。
- 沿用 C 错误码判断逻辑,缺少主动捕获异常的意识,觉得 try-catch 多余。
- 分不清 static 静态变量与 C 全局变量区别,频繁出现静态访问非静态成员逻辑错误。
- 习惯 C 宏、多继承写法,不会用 final 常量、接口做代码解耦与复用。
- 缺少安全预判思维,容易忽略空引用、数组越界等 Java 特有运行隐患。
三、改进方案
- 整理 Java 与 C/C++ 核心差异笔记,每天复盘,摒弃旧语言思维定式。
- 写代码优先抽象实体类,成员变量私有化,拆分方法,拒绝堆砌代码。
- 吃透 Java 内存分区与 GC 原理,遇到内存相关问题从底层推导,不死记结论。
- 编码主动预判异常场景,熟练使用 try-catch,适应 Java 异常处理体系。
- 专项练习接口、final、抽象类等独有语法,减少对 C 特色语法依赖。
四、执行计划
- 每日 20 分钟:10 分钟对比语言差异,10 分钟手写面向对象练习。
- 记录跨语言混淆类错题,隔天回看巩固。
- 分模块突破内存、字符串、继承接口、异常四大差异板块。
- 验收:能清晰区分 Java 与 C/C++ 核心区别,独立写出规范面向对象代码。
浙公网安备 33010602011771号