学号 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.java
jdb 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> <Enter>

2. “可能尚未初始化变量” 或 “无法从静态上下文中引用非静态 变量”

源文件见 迭代和JDB ,简略程序如下:

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: 可能尚未初始化变量n
Error:(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: 无法从静态上下文中引用非静态 变量 n
Error:(7, 13) java: 无法从静态上下文中引用非静态 变量 m
Error:(14, 23) java: 无法从静态上下文中引用非静态 变量 n
Error:(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) { //判断命令行输入参数的格式是否正确
......

即完成编译。

[代码托管]

  • 代码提交过程截图:

  • 代码量截图:

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

学习进度条

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

参考资料

学号 20175223 《Java程序设计》第 5 周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

  3. 学号20145322 《Java程序设计》第一周学习总结

    学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...

  4. 201521123061 《Java程序设计》第九周学习总结

    201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...

  5. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  6. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  7. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  9. 2018-2019-3《Java程序设计》第二周学习总结

    学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...

  10. # 20175329 2018-2019-2 《Java程序设计》 第二周学习总结

    学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...

随机推荐

  1. Qt5OpenGL.顶点像素大小设置

    1. 2. // ZC: 像素点的大小 设置:2种方式: // ZC: (1)代码指定方式 // ZC: (2)GLSL种指定方式[A]只能在顶点着色器种指定,不能在片原着色器种指定[B]代码中还要指 ...

  2. Bate冲刺 第四天

    1.各个成员今日完成的任务及对项目的贡献小时数 姓名 今日已完成任务 时间 马玉婷 特殊字符测试与完善 5h 马美玲 菜单栏测试与完善 5h 益西卓嘎 撰写博文 1h 2. 提供当天站立式会议照片一张 ...

  3. Hadoop2.X管理与开发

    Hadoop 2.X 管理与开发 一.Hadoop的起源与背景知识 (一)什么是大数据 大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式 ...

  4. NRF52832与W25Q80通信

    1 NRF52832SPI主机的功能描述 nRF52832SPIM的主要特征 3个SPI实例 支持SPI的模式0到模式3 支持DMA Individual selection of IO pin fo ...

  5. Python自学:第三章 动手试一试 3-4、3-5

    # -*- coding: GBK -*- liebiao = ["zhang", "li", "wang", "zhou&quo ...

  6. Python自学:第三章 根据值删除元素

    motorcycles = ["honda", "yamaha", "suzuki", "ducati"] print( ...

  7. JVM内存模型和GC机制

    目录 1.JVM内存模型 2.GC 1.JVM内存模型 堆,栈,本地方法栈,方法区,程序计数器 2.GC 新生代收集器:Serial(单线程).ParNew.Parallel Scavenge: 老年 ...

  8. 日常记Bug

    前记:后端写代码应该对数据的交互更加掌握,不要被编码.数据模型细节坑住 Unicode编码.Django数据迁移偶尔产生的不稳定 处理细项工资记录模型: class TeachRoll(models. ...

  9. python-*args和**kwargs作用和区别

    1. *args 不定长的参数:*args 无论你传递一个参数还是二个还是多个都可以.(*args传入的是无命名参数,例如:add(1,2,3,4,5)存储的是元祖)args可以自定义其他名称 def ...

  10. 深入了解UML类图

    深入浅出UML类图 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the ...