一、枚举类型(Enum)
· 核心问题:枚举是基本数据类型还是引用类型?
· 验证方法:使用和equals()比较枚举值。
· 结论:枚举是引用类型,但相同值的枚举变量指向同一个对象,因此和equals()比较结果相同。
二、变量屏蔽原则
· 核心问题:局部变量与成员变量同名时,访问的是哪一个?
· 结论:Java遵循“就近原则”,局部变量会屏蔽同名的成员变量。
三、类型转换与精度损失
- 浮点数精度问题
· 现象:2.0 - 1.1的结果不是0.9,而是0.8999999999999999。
· 原因:某些十进制小数在二进制中无法精确表示。
· 解决方案:使用BigDecimal类,并且必须使用字符串构造。 - 字符串连接陷阱
· 代码:
· 结论:+运算符从左到右计算,遇到字符串后后续操作变为字符串连接。System.out.println("X+Y="+X+Y); // 输出 "X+Y=100200" System.out.println(X+Y+"=X+Y"); // 输出 "300=X+Y"
四、二进制、位运算与补码
· 核心问题:Java中整数是如何在计算机中表示的?
· 结论:Java中的整数采用二进制补码形式表示,这使得加减法运算统一,且能够自然处理负数。
五、运算符优先级
· 典型错误:a + b + c / 3 是错误的求平均值方式。
· 正确写法:(a + b + c) / 3。
· 建议:不确定优先级时,多用括号。
六、验证码生成(课后作业3)
· 任务:编写程序自动生成六位随机验证码。
· 关键方法:使用Math.random()生成随机数,并进行类型转换。
· 知识点:随机数生成、循环控制、字符拼接。
💡 学习总结与建议
- 编程思维:理解“分解-模式识别-抽象-算法”的思维方式比掌握语法更重要。
- 重视基础:类型系统、运算符优先级、变量作用域等是Java编程的基石。
- 实践出真知:所有“动手动脑”问题都要求通过编码验证,这是掌握知识的最佳途径。