20162301 张师瑜《程序设计与数据结构》第三周学习总结

时间:2023-02-21 14:34:38

20162301 2016-2017-2 《程序设计与数据结构》第3周学习总结

教材学习内容总结

  • 1.创建对象(new运算符);别名(多个引用变量可以指向同一个对象,因为对象变量不保存对象本身,保存的是对象的地址)

  • 2.String类(字符串第一个字符的下标是0)

  • 3.包(标准类库为Java API;import声明)

  • 4.Random类

  • 5.Math类

  • 6.格式化输出(NumberFormat类 eg:getCurrencyInstance,getPercentInstance;DecimalFormat类;printf方法)

  • 7.枚举类型(enum)

教材学习中的问题和解决过程

  • 问题1:不理解书本P51程序3.2中import java.util.Random;的含义
  • 解决方案:仔细阅读书本内容并查阅相关资料,明白了import声明列出了要在程序中使用的包及类(除java.lang包中的类自动使用)Random类属于java.util包。所以这段话的意思是,该程序使用在java.util中的Random类方法。

  • 问题2:不理解P54程序3.3中Math.pow等Math类的意思。
  • 解决方案2:阅读有关Math类的博客,得到以下结论。

结果 方法
乘方 Math.Pow()
开方 Math.Sqrt()
e的次方 Math.Exp()
绝对值 Math.Abs()
对数 Math.Log()
π Math.PI
e Math.E
  • 问题3:上周printf方法了解的不彻底,导致书本上P57的知识看不懂。
  • 解决方案:读了刘伟康同学上周的博客,也找了一些有关printf介绍的文章,使了解更进一步。
方法 表示
%c 单个字符
%d 十进制整数
%f 十进制浮点数
%o 八进制数
%e 计算机科学计数法表示的十进制数
%s 字符串
%x 十六进制数
%% 输出百分号%
  • 问题4:书本P57程序3.5中模拟字符串“0.###”,但圆面积的结果却为78.54,小数点后面只有两位?
  • 解决方案:在询问同学后发现,书本PP56页中写道“使用这种模式不会打印出拖尾0

  • 问题5:书本P48程序3.1中concat与“+”加号的区别?
  • 解决方案:根据自己的判断以及上网查询有关问题得出结论:两者都可以将2个字符串拼接到一块,。但是“ +” 还可以将字符串与非字符串(比如数字),拼接在一起,成为字符串。

  • 问题6:看不懂书本3.7枚举类型
  • 解决方案:java enum(枚举)的使用(还是有点一知半解,还需要时间去深入了解)

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

  • 问题1:如何运行bin中的代码
  • 解决方案:除了平时常用的cd bin/ java xxx来运行,老师建议用java -cp bin xxx
  • 问题2:在虚拟机中下载并安装JDK
  • 解决方案:将电脑中下载完的jdk压缩包发送到自己的邮箱中,然后在虚拟机里打开自己的邮箱,将压缩包下载下来。通过娄老师所写的安装指导了解到mkdir ~/jdk使用tar -xzvf jdk-8u121-linux-x64.tar.gz; mv jdk-8u121 ~/jdk 进行解压,顺利在虚拟机里下载了JDK。
  • 问题3:完成PP3_1时出现以下两种问题
    20162301 张师瑜《程序设计与数据结构》第三周学习总结
    20162301 张师瑜《程序设计与数据结构》第三周学习总结

  • 解决方案:String1 = surname.charAt (0)前加上char,删除String中的string1

代码托管

  • 代码提交过程截图:
    20162301 张师瑜《程序设计与数据结构》第三周学习总结

  • 代码量截图:
    20162301 张师瑜《程序设计与数据结构》第三周学习总结

上周考试错题总结

  • 错题1:填空:Linux Bash中,(grep )命令可以进行全文检索。
  • 原因:没有记住进行全文检索的命令为grep。我所写的答案是od命令,实际上od命令是查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。
  • 错题2:填空:Java程序开发中遇到的逻辑错误,命令行中要用(JDB)进行调试。
  • 错题3:填空:Java中的字符‘a’的长度是(2)个字节。
  • 原因:对字节字符方面知识存在漏洞。Java中一个字节为8个Byte,一个字符为2个字节。所以字符’a’的长度是2个字节。

  • 错题4:判断:Java中赋值需要类型相匹配,所以byte i = 3; int j =2; j=i;中的赋值是无法通过编译的。(X)
  • 原因:将byte转化为int是加宽转换,使用的是相等或更大的内存空间,通常不会丢失任何信息。(转换为浮点数的加宽转换可能会损失精度,但这道题不涉及这个问题)。反之如果是缩窄转换,使用的是更小的空间来存储数值,可能会丢失信息。

  • 错题5:填空:~0b1011的十进制值是(-12)
  • 原因:当时不知道“~”为运算符,“ob”表二进制。
    20162301 张师瑜《程序设计与数据结构》第三周学习总结

  • 错题6:填空 :0x10%8 的结果是(0 )
  • 原因:0x代表的是十六进制,0x10=16,16%8=0

  • 错题7: 判断:byte a=3;byte b=4; 那么 a+b的类型也是byte.(X)
  • 原因:byte, short, char 这些整数类型,只要+ - * / % , 等式右边就会变为 int 类型。

  • 错题8:填空:System.out.println(52+25+“”);的结果是(77)
  • 原因:判断运算符“+”是加法还是字符串连接。这题中是单纯的加法运算。(双引号在数字的后面)

  • 错题9:判断:System.out.printf("%b", 11)的输出结果是0b1011 (X)
  • 原因:我在网上有看到说:“在c/c+ +里面所有整数非0视为true,0视为false但没有提到在java中。”后来娄老师在答疑论坛上回答了该问题。“c/c++中没有boolean类型,在c/c+ +里面所有整数非0视为true,0视为false。
    在Java中,所有其他类型转为 boolean都会出语法错误,强制类型转换也不行。发现整数,小数,不论正负(包括0),只要在规定范围内,都输出true,而输入true也输出true,只有输入false才输出false,这样结论很清楚了,%b是boolean类型,类型正确时,true输出true,false输出false,类型不正确时都输出true。 ”

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

这周学习了书本第三章的内容,明显感觉到了难度在上升,刚开始看书本都是一点都看不懂的程度。这章的内容丰富,书本里举得例子也很多。要想看明白书中所给的代码究竟是什么意思,就必须再深入研究所给类别中的具体方法。虽然现在书中的内容大致看明白了,但是写作业时却又难以下手。后来,我看了几位同学的码云(都写得非常非常好),跟着他们所写的代码,理解题目所要求的内容,然后自己试着再在虚拟机中尝试一遍。虽然是自己编写的,但总有一种看了答案后做题的感觉。我知道这种做法并不是很好,所以要给自己定个小目标:下周开始独立完成课后作业,不到万不得已不看别人的码云(这个小目标应该比一个亿好实现...)。这周的考试错了很多题,我看大部分的问题都出现在概念上。随着考试的增加,知识上各方面的漏洞也体现了出来。上周光顾着复习书本表面的知识,缺少了自己的思考。在这里要反思一下,以后要在各方面学习中注意自己的思考和总结。You can hold on to what other people can't hold on to,and you can have what others can't!共勉!
20162301 张师瑜《程序设计与数据结构》第三周学习总结

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 57/57 1/1 24/24
第二周 338/395 1/2 18/42
第三周 497/892 1/3 18/60

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:15小时

  • 实际学习时间:18小时

  • 改进情况:多多尝试动手实践,减少对外在帮助的依赖。试试让自己独立完成课后程序的编译,即使错误很多次,花费了更多的时间,但是同时也会收获的更多。

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料