第二、三周作业
学号 20182325 《数据结构与面向对象程序设计》第2、3周学习总结
教材学习内容总结
- 打字符串需要加"+"其余直接打。也可分行连接。
- boolean只有true or false的类型。
- Scanner类输入先输入创立对象例如Scanner scan = new Scanner(System.in).再凭借此进行输入。如a=scan.nextInt(),注意后面的类型首字母大写。
- 包>类>方法
- 用import声明使用类
- Math是静态方法
- java.text包有NumberFormat和DecimmalFormat
- NumberFormat中getCurrencyInstance转化为货币,getPercentInstance转化为百分比。
- DecimmalFormat可以将数字转化字符串。还可以设置。
- eg.DecimmalFormat fmt=new DecimmalFormat ("0.###")
- System.out.println(fmt.format(area))
- java也有printf
- enum枚举类及结果自己设,+、-不是标识符不可用。ordinal表示叙述,name表示名字。
教材学习中的问题和解决过程
- 问题1:对书上类中方法不知道怎么用。
- 问题1解决方案:询问老师,了解书上写法为前面为类型后面输入方法的关键字。
- 问题2:如下enum fff{a,b,c}
fff d,e,f;
d.name; e.ordinal;
变量名当做类来用? - 问题2解决方案:将d,e,f视为对象,就一样了
- ...
代码调试中的问题和解决过程
- 问题1:不停调试编译,放在两个文件夹超麻烦。
- 问题1解决方案:先就在一个文件夹,完成之后再转移。
- 问题2:如果字符串只有三个字符,而你要输出5个字符就会溢出。
- 问题2解决方案:加个测试代码,确保不报错。
- 问题3:无法正常使用类与方法。
- 问题3解决方案:1.import java. 2.注意大小写 3.是否创建对象 4.基本数据类型是否错误
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1:
- When executing a program, the processor reads each program instruction from (当执行一个程序时,处理器从___读取每个程序指令)
- 错误选项:gisters stored in the processor (储存在处理器中的寄存器)
- 正确选项:main memory (主存储器)
- 分析:寄存器是CPU的组成部分,处理器是从主存储器读取
- 错题2:
- Volatility is a property of (易变性是___的性质)
- 错误选项:software (软件)
- 正确选项:RAM (随机存储器)
- 分析:易变性有可见性和有序性两重含义。
- 可见性:
- Java虚拟机会为每个线程分配一块专属的内存,称之为工作内存;不同的线程之间共享的数据会被放到主内存中。工作内存主要包含方法的参数、局部变量(在函数中定义的变量),这些变量都是线程私有的,不会被其它线程共用。实例的属性、类的静态属性都是可以被共享的,每个线程在操作这些数据时都是先从主内存中读取到工作内存再进行操作,操作结束后再写入到主内存中。可见性要求线程对共享变量修改后立即写入到主内存中,线程读取共享变量时也必须去主内存中重新加载,不能直接使用工作内存中的值。Java中的变量在默认情况下是不具有可见性的,需要用volatile关键字修饰才具有可见性。
- 易变性另一层含义就是有序性,是指禁止CPU对指令重排优化,默认情况下CPU会对指令进行合理的重排优化,重排优化仅保证单线程运行时结果的正确性,不保证执行顺序。但是虚拟机不会对指令任意重排,而是有一定的规则。
- 错题3:
- The ability to directly obtain a stored item by referencing its address is known as (通过引用地址直接获得存储项的能力被称为___)
- 错误选项:fetch access (获取访问)
- 正确选项:random access (随机存取)
- 分析:RAM和ROM都是随机(直接)存取设备,随机存取意思是仅可通过地址恢复获取存储项。
- 错题4:
- It is important to dissect a problem into manageable pieces before trying to solve the problem because (试图解决问题之前,把一个问题分解成可控制的几部分是很重要的,因为)
- 错误选项: all of the above (以上皆是)
- 正确选项:It is important to dissect a problem into manageable pieces before trying to solve the problem because (试图解决问题之前,把一个问题分解成可控制的几部分是很重要的,因为)
- 分析:翻了想当然的错误,其他选项看起来有道理,但书上根本没提。
- 错题5:
- Java is an example of a(n) (Java是一个___的例子)
- 错误选项:high-level language (高级语言)
- 正确选项:both high-level language and fourth generation language (高级语言和第四代语言都是)
- 分析:学习太死板,虽然书上没有明确提出但意思还是很明确。要灵活变通。
- 错题6:
- Which of the following would be a good variable name for the current value of a stock? (下面哪个是关于变量“current value of a stock”的最佳命名?)
- 错误选项:csv
- 正确选项: currentStockVal
- 分析:长度要适中
- 错题7:
- In a Java program, dividing by 0 is a syntax error. (在Java程序中,除以0是一个语法错误。)
- 错误选项:false
- 正确选项: ture
- 分析:逻辑错误
- 错题8:
- In a Java program, dividing by 0 is a syntax error. (在Java程序中,除以0是一个语法错误。)
- 错误选项:false
- 正确选项: ture
- 分析:逻辑错误
- 错题9:
- What is output with the statement System.out.println(x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(x+y);的输出是什么?)
- 错误选项:出错
- 正确选项: 15
- 分析:先计算10+5在输出
- 错题10:
- A double is wider than a float and a float is wider than an int. (一个double类型的数比float类型的数更宽泛,一个float类型的数比一个int类型的数更宽泛。)
- 错误选项:false
- 正确选项: ture
- 分析:更宽的类型在大小上更大,或者可以存储更大范围的值。double是64位,而float是32位,由于它的存储方式,float可以存储比int大得多的值范围。
- 错题11:
- In order to compare int, float and double variables, you can use <, >, ==, !=, <=, >=, but to compare char and String variables, you must use compareTo( ), equals( ) and equalsIgnoreCase( ).
- 错误选项:ture
- 正确选项:false
- 分析:还可以使用<、>、==、!=、<=、>=直接比较char变量,但是必须使用compareTo()、equals()和equalsIgnoreCase()进行任何字符串比较。
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
-
博客中值得学习的或问题:
- 总结全面到位
- 运用各种格式,更易于阅读
- ...
-
代码中值得学习的或问题:
- 思想具有普遍性,适用多种状况 。
- ...
-
基于评分标准,我给本博客打分:10分。得分情况如下:
-
符合第一条,第二条,第三条加一分,第四条加一分,
-
周五前发博客的加1分
-
感想,体会不假大空的加1分
-
排版精美的加一分
-
进度条中记录学习时间与改进情况的加1分
-
结对学习情况真实可信的加1分
-
点评认真,能指出博客和代码中的问题的加1分
点评过的同学博客和代码
- 本周结对学习情况
- 20182319
- 结对照片
- 结对学习内容
- 如何调试代码
- 关于博客编译的错误
- 互相监督打代码 ,以及当有问题时互相解决。
- 上周博客互评情况
其他(感悟、思考等,可选)
- 逐渐渡过基础开始进入真正的java学习和C有很多不同但还不算太吃力。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 7200行 | 30篇 | 400小时 | |
第一周 | 62/62 | 3/3 | 18/18 | |
第三周 | 347/454 | 4/7 | 42/60 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:36小时
-
实际学习时间:42小时
-
改进情况:比我想象中的更耗时间。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)