目录
学号 20175223 《Java程序设计》第 5 周学习总结
目录教材学习内容总结
- 第六章要点:
- 要点1:接口:interface;
- 要点2:实现接口implements:类实现接口、重写接口中的方法;
- 要点3:接口的UML图;
- 要点4:接口回调、理解接口;
- 要点5:接口与多态;
- 要点6:接口参数;
- 要点7:abstract类与接口的比较;
- 要点8:面向接口编程;
- 要点9:应用举例。
教材学习中的问题和解决过程
1. 在 jdb 调试时使用命令行参数。
- 问题1解决方案:
同在解释文件时,java xxxx <参数1> <参数2> <参数3> ...
的通过命令行传入参数命令相同:
javac -g -d bin xxx.javajdb xxx <参数1> <参数2> <参数3> ... 参数3> 参数2> 参数1>
代码调试中的问题和解决过程
1. 在jdb调试时通过命令行传入参数
- 问题1解决方案:
在执行完 javac -g -d bin src/*.java
后,一般都是 jdb -classpath .:./out xxxx
。
jdb -classpath .:./out xxxx
后加入参数即可: jdb -classpath .:./out xxxx <参数1> <参数2> ... <参数n>参数n> 参数2> 参数1>
2. “可能尚未初始化变量” 或 “无法从静态上下文中引用非静态 变量”
源文件见 ,简略程序如下:
public class Recursion { //执行C(n,m)的递归公式 ......}public class Estimate { //执行主要的判断 ......}public class Combination { //主类 public static void main(String[] args) { int n, m; //**[代码1]** if (args.length == 2) { //判断命令行输入参数的格式是否正确 n = Integer.parseInt(args[0]); //将命令行参数中的 String 型转化为 int 型,并赋值给 n 、 m m = Integer.parseInt(args[1]); } else { System.out.println("Input args Error!"); System.exit(0); } Estimate esti = new Estimate(); esti.estimate(n, m); }}
编译时会报错:
Error:(13, 23) java: 可能尚未初始化变量nError:(13, 26) java: 可能尚未初始化变量m
问题分析:
这是成员变量与局部变量区别的问题:成员变量会有初始值,局部变量没有初始值。 上述程序的第 11 行 [代码1]int n, m;
是在 public static void main(String[] args) {}
之中的,属于局部变量,无初始值,会报错。解决方案如下: - 问题2解决方案一: 局部变量 n、m 没有初始值,给它们赋值即可。 将上述程序的第 11 行 [代码1] 更改如下,就不会报错。
int n=0, m=0;
- 问题2解决方案二: 将 n、m 由局部变量变更为成员变量。 而如果只是将 [代码1]
int n, m;
移至 [代码2]:
public class Combination { //主类 int n, m; //**[代码2]** public static void main(String[] args) { if (args.length == 2) { //判断命令行输入参数的格式是否正确 ......
是不对的,会报错:
Error:(6, 13) java: 无法从静态上下文中引用非静态 变量 nError:(7, 13) java: 无法从静态上下文中引用非静态 变量 mError:(14, 23) java: 无法从静态上下文中引用非静态 变量 nError:(14, 26) java: 无法从静态上下文中引用非静态 变量 m
这是因为 [代码2] int n, m;
是非静态(动态)的,而 main 是静态的。
int n, m;
前加静态前缀:static,使 n、m 成为静态成员变量。 public class Combination { //主类 static int n, m; //**[代码2]** public static void main(String[] args) { if (args.length == 2) { //判断命令行输入参数的格式是否正确 ......
即完成编译。
[代码托管]
- 代码提交过程截图:
- 代码量截图:
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 322/322 | 1/1 | 23/23 | |
第二周 | 520/842 | 3/4 | 25/48 | |
第三周 | 458/1300 | 2/6 | 16/64 | |
第三周 | 914/2214 | 2/8 | 21/85 | |
第四周 | 685/2899 | 1/9 | 18/103 |
2899
计划学习时间:20小时
实际学习时间:18小时