学号 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. 又谈T检验

    今天有同学的论文被指摘了,就是又用了T检验,又用了ANOVA,reviewer直接说用ANOVA就行了.所以回想下了T检验. 简而言之,T检验就是用来比较均值的,样本均值和已知总体均值是否有差异.(也 ...

  2. NetSec2019 20165327 Exp6 信息搜集与漏洞扫描

    NetSec2019 20165327 Exp6 信息搜集与漏洞扫描 一.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 二.实践内容 1.各种搜索技巧的应用 2.DNS IP注册信息的查询 ...

  3. 搭建Python自动化测试环境+元素定位

    https://blog.csdn.net/GitChat/article/details/79081187

  4. xadmin邮箱验证码 标题 EmailVerifyRecord object

    [修改users-models模块] 1.如果这样不生效 def __unicode__(self): return '{0}({1})'.format(self.code, self.email) ...

  5. Arthur and Questions CodeForces - 518E (贪心模拟)

    大意: 给定序列$a$, 某些位置为'?', 求给'?'赋值使得序列$(a_1+a_2+...+a_k,a_2+a_3+...+a_{k+1},...)严格递增, 且$\sum|a_i|$最小. 化简 ...

  6. 712. Minimum ASCII Delete Sum for Two Strings

    题目: Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings eq ...

  7. numpy+plot初试

    #coding:utf-8 """ 灵活设置筛子个数,比如3个筛子 """ import numpy as np import matplo ...

  8. git设置用户名和邮箱

    用git config --global user.name "your name"命令来设置你的用户名 用git config --global user.email " ...

  9. node-sass模块的安装

    使用淘宝源 npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ npm config set phant ...

  10. laravel清缓存,flex简单使用

    关于laravel 删除视图缓存:php artisan view:clear 清除运行缓存:php artisan cache:clear 清除配置缓存:php artisan config:cle ...