20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结
20172319 2018.04.11-16
《Java程序设计教程》第6周学习总结
目录
- 教材学习内容总结
- 教材学习中的问题和解决过程
- 代码调试中的问题和解决过程
- 代码托管
- 上周考试错题总结
- 结对及互评
点评过的同学博客和代码 - 其他(感悟、思考等,可选)
- 学习进度条
- 参考资料
教材学习内容总结
第八章 数组:
数组元素:
(1) 数组:同一类型多个数据的集合;
(2) 索引(下标):数据在数组里对应的特定位置; 数据的访问方式: 数组名[索引值];注: N个值达到数组的索引值为0—(N-1);
(3) 数组在内存中连续存放;确定数组元素地址的计算方法:该组元素的索引值 x 每个元素所占字节数 + 数组起始地址;
(4) []运算符优先级最高。声明和使用数组元素:
(1)边界检查:自动执行,执行访问时,当索引值小于0或大于(N-1)时系统给出ArrayIndexOutOfBoundsException异常。 可调用方法放大数组【例8.8】
(2)数组声明方式:数据类型[] 数组名 或 数据类型 数组名[];
二者一致但前者对于所声明的数据类型更为清晰。
(3)数组初始值表:相当于变量初始化;数据类型[] 数组名 = {数据,数据...}; 可以不用new运算符创建数组对像;只能在数组第一次声明时使用;
(4)数组作为参数:整个数组作为参数传递给方法,打印时不再仅仅是一个数,而是数组中的所有元素。对象数组: 实质是对象引用了数组;数组必须实例化,且应分别建立保存在数组中的对象。
命令行实参:
String[] args
调用解释器执行程序时命令行所包含数据;储存在String对象的数组中,提供给main方法。可变长度参数表: 方法重载;定义方法时定义成参数个数可变的方法:
public 类型 方法名(类型 ... 数组名)
在调用时可根据需求改变数据量个数;也可接受其他参数:public 类型 方法名(A类型 参数名,B类型 ... 数组名)
一个方法不可接收两组可变参数; 可用构造方法接收可变参数。
public double average(int ... list)
{
double result = 0.0;
if (list.length !=0)
{
int sum = 0;
for (int num : list)
sum += num;
result = (double)sum / list.length;
}
return result;
}
- 二维数组与多维数组
(1)二维数组:一维数组中含一维数组;类型[][] 数组名
一个索引值指定行,另一个指定列;每个维的大小可以不同
(2)多维数组: 数组的多层嵌套。
教材学习中的问题和解决过程
- 问题1:
for(int value : list)
??? - 解决:表示对数组list中的每一个value元素做相同的操作,类似于for-each循环。
for(int i = 0; i < list.length; i++)
{
}
问题2: 为什么数组中的索引值要从0开始而不是1?
解决:查了一下,大多数的回答是地球人都知道... 我可能来自外太空,不过后面总算找到一个挺靠谱的;
对于此问题的理解,应该要注意地址及偏移:
(1)数组是申请内存来存储其数据,它所申请的内存实际上是一串连续的内存地址
(2)例:int[] a=new int[3];申请一段:int 数据类型的数组,a 为变量,数组长度为:[3];
(3)数组的下标就是对这个数组进行偏移。这是硬件特性决定的。即(a[0]等同于*(a + 0))。
(4)
以下是索引从0开始a[0]——把a拿到的内存地址:1008 + 0 = 1008 (指向第一个内存地址);
a[1]——把a拿到的内存地址:1008 + 1 = 1009 (指向第二个内存地址);
a[2]——把a拿到的内存地址:1008 + 2 = 1010 (指向第三个内存地址);以下是索引从1开始
a[1]——把a拿到的内存地址:1008 + 1 = 1009 (指向第一个内存地址);
a[2]——把a拿到的内存地址:1008 + 2 = 1010 (指向第二个内存地址);
a[3]——把a拿到的内存地址:1008 + 3 = 1011 (指向第三个内存地址);可以看到如果索引值从1开始便指向了错误的地址,因此得不到自己预想的,为了获得正确的元素地址。
应该*(a+0-1), *(a+1-1), *(a+2-1).
+n表示元素的索引,-1是获得正确元素地址
每次都要依靠此来获得正确的数据,增加了CPU的运算,也浪费了资源。
因此,索引初始值设置为0,减少了-1这一操作,也可以提高CPU的运行效率。
代码调试中的问题和解决过程
- 问题1:循环语句使用时的逻辑错误
- 解决:在完成编程项目PP8.5的过程中,平均数的计算老是有错误,经过调试,发现自己在while循环时最后break退出前index++依然执行,导致最后得到结果时分母+1,因此算出来的平均值总是小于预期平均值。最后在break前,加入index--语句,保证输入的num的个数与索引值是一样的,这样在后面结果的运行中就不会出现错误。
代码托管
![](https://images2018.cnblogs.com/blog/1334495/201804/1334495-20180415220208960-729095664.png)
![](https://images2018.cnblogs.com/blog/1334495/201804/1334495-20180415220230782-1940675040.png)
上周考试错题总结
错题1:
理解:在x = 1的情况下,循环条件为真并执行语句,将x加倍(现在为2)。由于循环条件仍然为真,语句再次执行,将x加倍为4.对于接下来的4次迭代,条件保持为真,其中x变为8,16,32和64.由于(x <100)在x = 64时仍然是正确的,所以循环再次迭代并且x变为2 * 64 = 128。现在,(x <100)不再是真实的并且循环以x = 128结束。
错题2:
理解:四个陈述中有关复选框的每一个都是真实的
错题3:
理解:虽然C系列语言确实以这种方式解释了零值和非零值,但Java要求使用保留常量true和false,或者使用关系和/或逻辑运算符进行逻辑评估。
错题4:
理解:switch语句只能在被测试的单个变量使用时使用,并且它是一个整型(int或Java中的char)。此外,因为您必须枚举每个可能的测试值,所以switch语句只有在被测试值的数量很小时才有意义。
错题5:
理解:虽然写这样的switch语句是不寻常的,但它是完全合法的。switch语句执行的正常规则适用于计算switch表达式之后执行的匹配的case子句。接下来,所有后续的子句都将按顺序执行,因为没有中断语句来终止switch/case的执行。
错题6:
理解:变量x从10开始。每次通过循环,x递减,并且一旦x不大于0,循环最终退出,在这种情况下,这意味着一旦x变为0。因此,循环体执行x = 10, x = 9,x = 8等等,直到x = 0。这是11次。
错题7:
理解:变量j从字符串的长度向下计数到1,每次在位置j-1打印出字符。长度为1的字符是打印的第一个字符,这是字符串的最后一个字符。它会一直持续到j = 1,并在位置j-1或第0个字符处打印出字符,以便向后打印整个字符串。
结对及互评
点评过的同学博客和代码
- 本周结对学习情况:
- 20172316
- 博客中值得学习的或问题:
- 教材内容总结精炼
- 其他(感悟)?
- 学习进度条应该更有顺序地排版
- 20172329
- **博客中值得学习的或问题: **
- 排版精美
- 内容充实
- commit格式不准确
其他(感悟、思考等,可选)
- 本周学习时间较之前来说减少不少,编程时需要考虑的东西太多,而且有时候考虑的事情太杂,在编程时花的时间较多。
- 许多时候遇到的问题不能及时地记录,导致写博客时间过于亢长。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 202/202 | 1/2 | 15/15 | 积极主动敲代码 |
第二周 | 490/692 | 1/3 | 18/33 | 善于思考 |
第三周 | 581/1273 | 1/4 | 15/48 | 善于完善 |
第四周 | 1857/3130 | 1/6 | 33/81 | 累 |
第五周 | 655/3787 | 1/7 | 22/103 | |
第六周 | 531/4318 | 1/8 | 18/121 |
- 预计学习时间:27小时
- 实际学习时间:22小时
- 改进情况:应对时间有合理的分配
返回目录
参考资料
20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结的更多相关文章
- 20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)
20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- 20172319 2018.04.01-04.11 《Java程序设计》第5周学习总结
20172319 2018.04.01-04.11 <Java程序设计>第5周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错 ...
- 20172319 2018.10.19《Java程序设计教程》第7周课堂实践(补写博客)
20172319 2018.10.19 <Java程序设计教程>第7周课堂实践 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- # 20175120 2018.3.10 《Java程序设计》第2周学习总结
## 教材学习内容总结第二章内容1.标识符第一个字符不能是数字字符不能是关键字和true\false\null2.8个基本数据类型boolean int byte short long float d ...
- # 20175120 2018.3.3 《Java程序设计》第1周学习总结
## 教材学习内容总结 1.安装ubuntu,在实验楼学习liunx系统各种功能的实现.2.在ubuntu平台上进行java程序的编写3.学会使用JDB调试java程序,并将代码上传到码云上4.学习j ...
- 20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结
20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中 ...
- 学号 20175223 《Java程序设计》第 5 周学习总结
目录 教材学习内容总结 教材学习中的问题和解决过程 1. 在 jdb 调试时使用命令行参数. 代码调试中的问题和解决过程 1. 在jdb调试时通过命令行传入参数 2. "可能尚未初始化变量& ...
- 20175314 《Java程序设计》第七周学习总结
20175314 <Java程序设计>第七周学习总结 教材学习内容总结 第八章:常用实用类 String()类代表字符串:Java 程序中的所有字符串字面值(如 "abc&quo ...
随机推荐
- CSS+JQuery实现Tabs效果,点击更改背景色(不含图片)
1,Html代码 <body> <div id="box"> <ul id="tab_nav"> <li class= ...
- .NET分布式系统架构思路
分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价的.普通的机器完成单个计算机无法完成的计算.存储任务.其目的是利用更多的机器,处理更 ...
- Oracle cursors 游标 for循环遍历
oracle提供了for循环语句,让我们可以遍历select搜索的结果.用法也很简单,代码如下: DECLARE ; BEGIN FOR C IN C1 LOOP -- 对select出的每一行进行操 ...
- [笔记] Delphi 10.2.1 Tokyo 安装使用笔记
Android 平台: ListView 滑动速度已有改善,但比起 Berlin 还是略慢一些(在较慢的机子可感觉的到)仅于 Android 平台,其它平台没差. TMemo, TEdit 输入文字的 ...
- django的类视图-11
目录 1. 使用类视图 创建类视图 注册路由 类视图使用装饰器 在url中装饰 在类视图中装饰 method_decorator 的 name 参数 使用Mixin扩展类 使用函数方式定义的视图叫函数 ...
- 【转载】COM 组件设计与应用(三)——数据类型
原文:http://vckbase.com/index.php/wv/1206.html COM 组件设计与应用 系列文章:http://vckbase.com/index.php/piwz?& ...
- 2018"百度之星"程序设计大赛 - 资格赛 1002 子串查询
题面又是万能的毒毒熊... 实在不想写了,就只写了这题 记26个前缀和查询枚举最小值直接算 实在是氵的死 而且我忘记输出Case #%d 想了很久 >_< #include<bits ...
- eclipse下载与安装并测试
下载地址:www.ecplise.org 下载完成后双击安装 安装完成之后,第一次运行eclipse会弹出Workspace Launcher对话框,要求设置工作空间存放项目文档. ...
- 遗留系统:IT攻城狮永远的痛
我常常觉得我们非常幸运,我们现在所处的时代是一个令人振奋的时代,我们进入了软件工业时代.在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发.我们开发的软件不再是为 ...
- Fiddler抓包原来可以这么玩
Fiddler是一个抓包工具 1 解压压缩包至C\program files (x86) 2 打开C program files (x86) Fiddler Web Debugger V4.6.201 ...