一、编程思维与项目分解相关
- 按照“将整个程序分成若干个组件(分解);将多次出现的相似功能设成独立的方法(模式识别、抽象、算法);调试每个独立组件的健壮性(单元测试);按照功能要求进行组件组合(整合);再测试整个系统的性能”这一项目分解原则,重新编写课前测试题。
- 思考“愚公移山”案例分解后的稿件管理项目:还能不能进一步分解?为什么要进行分解?
二、枚举类型相关
- 仔细阅读示例程序EnumTest.java,运行该程序并分析运行结果,思考能得出什么结论,判断自己是否掌握了枚举类型的基本用法。
- 明确枚举类型是引用类型,其每个具体值都引用一个特定对象,相同的值引用同一个对象,且可使用“==”和equals()方法直接比对枚举变量的值(二者结果等价),基于此特性,尝试编写一个使用枚举类型的switch语句示例程序。
三、位运算与数值表示相关
- 阅读《信息科学与技术导论》或相关教材,或使用互联网搜索引擎,弄清楚反码、补码跟原码的概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算结果进行比对,判断Java中的数采用上述哪种码表示。
四、变量作用域相关
- 分析如下示例代码,判断输出结果是什么:
public class Test {
private static int value=1;
public static void main(String[] args){
int value=2;
System.out.println(value) ;
}
}
- 了解Java变量遵循“同名变量的屏蔽原则”,课后阅读相关资料深入理解该知识,然后自己编写一些测试代码,有意识地在不同地方定义一些同名变量,观察输出结果到底是哪个值。
五、数据类型转换相关
- 观察Java中的类型转换图(涉及char、byte、int、long、short、float、double类型),查阅Java中每个数据类型所占的位数和表示数值的范围,思考能得出什么结论(如哪些转换无精度损失,哪些转换有精度损失)。
- 运行以下TestDouble.java代码,观察输出结果,判断是否符合预期,思考为什么会出现这样的结果:
public class TestDouble {
public static void main(String args[]) {
System.out.println("0.05 + 0.01=" + (0.05 + 0.01));
System.out.println("1.0 - 0.42=" + (1.0 - 0.42));
System.out.println("4.015 * 100=" + (4.015 * 100));
System.out.println("123.3 / 100=" + (123.3 / 100));
}
}
- 思考为什么double类型的数值进行运算得不到“数学上精确”的结果,通过互联网查找资料或阅读相关计算机教材解决该问题(提示:与浮点数在计算机内部的表示方法有关)。
- 学习使用BigDecimal类处理精度损失问题(参考Demo:TestBigDecimal.java),思考为什么在构建BigDecimal对象时应使用字符串而不是double数值,否则仍有可能引发计算精度问题。
六、字符串操作相关
- 分析以下代码的输出结果,思考为什么会有这样的输出:
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
- 学习使用Integer.parseInt方法将String类型转为int类型,尝试编写一个程序,实现从控制台接收用户输入的字符串形式的数字,将其转换为int类型后进行简单的加法运算,并输出结果。
- 学习使用Double.parseDouble方法将String类型转为double类型,编写程序,接收用户输入的两个字符串形式的浮点数,转换为double类型后计算它们的乘积,输出结果。
七、变量类型区分相关
- 明确Java中引用类型变量和原始数据类型变量的区别:引用类型变量引用一个对象(存放对象在内存中的位置,可看成指针,又称“对象变量”);原始数据类型变量仅包含数据。基于此,编写程序分别定义这两种类型的变量,并通过输出语句展示它们的特性(如引用类型变量指向对象,原始类型变量直接存储值)。
八、课后实验性作业
- 一家软件公司程序员二柱需要为上小学二年级的孩子每天出30道四则运算题目,思考可以用哪些语言或工具实现该程序(如Excel、C/C++、C#、VB、Unix Shell、Emacs、Powershell/Vbscript、Javascript、Perl、Python等),并估计用自己最擅长的工具写好这个程序需要的时间。
- 编写一个自动生成验证码的程序,要求能生成如登录界面中所示的验证码(可参考RandomStr.java,使用类型转换生成六位验证字符串,确保每次运行程序都会生成不同的字符串)。
- 精读《程序员修炼之道:从小工到专家》或者《代码大全2》,分别发表九篇阅读笔记,要求10月3篇,11月3篇,12月3篇。
- 将课程中的所有动手动脑的问题以及课后实验性的问题,整理成一篇文档,以博客形式发表在博客园(截止时间2025-09-28中午12:00)。