博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学号 20175223 《Java程序设计》第 5 周学习总结
阅读量:5369 次
发布时间:2019-06-15

本文共 2666 字,大约阅读时间需要 8 分钟。

目录

学号 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>
...

代码调试中的问题和解决过程

1. 在jdb调试时通过命令行传入参数

  • 问题1解决方案:

在执行完 javac -g -d bin src/*.java 后,一般都是 jdb -classpath .:./out xxxx

如果在调试时要用到命令行传入参数,直接在 jdb -classpath .:./out xxxx 后加入参数即可:

jdb -classpath .:./out xxxx 
<参数1>
<参数2>
...
<参数n>

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 是静态的。

需要在 [代码2] int n, m; 前加静态前缀:static,使 n、m 成为静态成员变量。

public class Combination {             //主类    static int n, m;                       //**[代码2]**    public static void main(String[] args) {        if (args.length == 2) {             //判断命令行输入参数的格式是否正确    ......

即完成编译。

[代码托管]

  • 代码提交过程截图:

image.png

image.png

  • 代码量截图:

image.png

其他(感悟、思考等,可选)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 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小时

参考资料

转载于:https://www.cnblogs.com/Yogile/p/10632965.html

你可能感兴趣的文章
MyEclipse部署Jboss出现java.lang.OutOfMemoryError: PermGen space
查看>>
ZOJ 1133
查看>>
alibaba / zeus 安装 图解
查看>>
Planned Delivery Time as Work Days (SCN discussion)
查看>>
Ubuntu:让桌面显示回收站
查看>>
Android上传头像代码,相机,相册,裁剪
查看>>
git 安装体验
查看>>
Oracle 给已创建的表增加自增长列
查看>>
《DSP using MATLAB》Problem 2.17
查看>>
if 循环
查看>>
uva 111 History Grading(lcs)
查看>>
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
jQuery拖拽原理实例
查看>>
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>