学号 20175223 《Java程序设计》第 5 周学习总结
学号 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 周学习总结的更多相关文章
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 学号20145303 《Java程序设计》第一周学习总结
学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...
- 学号20145322 《Java程序设计》第一周学习总结
学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...
- 201521123061 《Java程序设计》第九周学习总结
201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 201521123045 <java程序设计>第11周学习总结
201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...
- 20175313 张黎仙《Java程序设计》第九周学习总结
目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...
- 2018-2019-3《Java程序设计》第二周学习总结
学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结 第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...
- # 20175329 2018-2019-2 《Java程序设计》 第二周学习总结
学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结 第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...
随机推荐
- Android 项目配置 gitlab-ci 持续集成
一.项目根目录下创建一个 .gitlab-ci.yml 文件 然后在 .gitlab-ci.yml 中配置持续集成的脚本: 脚本配置详细可以看: Configuration of your jobs ...
- vitual dom实现(转)
1. 通过JavaScript来构建虚拟的DOM树结构,并将其呈现到页面中: 2. 当数据改变,引起DOM树结构发生改变,从而生成一颗新的虚拟DOM树,将其与之前的DOM对比,将变化部分应用到真实的D ...
- Android之人脸识别
**前言** 人工智能时代快速来临,其中人脸识别是当前比较热门的技术,在国内也越来越多的运用,例如刷脸打卡.刷脸App,身份识别,人脸门禁等等.当前的人脸识别技术分为WEBAPI和SDK调用两种法方式 ...
- [数据算法]D1.BloomFilter
BloomFilter是一种高效的去重算法,算法的要义是散列对比. 1.原理 当一个元素加入集合时,判断这个元素是否 2.举例 例如我要对URL去重(这个在爬虫上可以用): URL1 -> 3. ...
- extract method
函数 简短,命名良好 函数名描述的是做什么 而不是怎么做 行数过高的代码中 将一大段做一个事的代码提取到独立的method 中 高层函数直接引用. 创建新函数 将提炼的代码平移到目标函数中 检查是否引 ...
- classList用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SWUST OJ(1044)
顺序栈基本操作的实现 #include <iostream> #include <cstdlib> using namespace std; typedef struct st ...
- 超详细的PDF Expert的注释功能介绍
今天,要给大家很是详细地介绍一下PDF Expert(一款专门在mac上使用的PDF阅读编辑器)的注释功能,让有点健忘的各位小伙伴们通过积极地与文本交互,从而记住更多的专业书内容. 具体使用方法请看以 ...
- 微信小程序开发和h5的区别
1. 开发小程序时,每个页面一定要在app.json文件中注册,页面文件夹和其包含的四个文件的名字要保持一致. 2. 小程序发起的都是HTTPS网络请求,在开发调试的过程中可以不校验协议和TLS版本, ...
- win10释放的wifi热点手机连不上
直入正题吧…… 在win10的搜索框里输入ser,找到“windows服务”选项,点击进入,如下图 找到下图所示的两个服务,然后,右键,属性,启动类型改为自动,然后点确定,确定完以后,再右键,点启动, ...