20165230 2017-2018-2 《Java程序设计》第2周学习总结
教材学习内容总结
- 本周学习了JAVA中的数据类型、数组、运算符、表达式和语句,与C语言很类似,二者也有区别。
- 标识符中的字母分大小写
- JAVA没有无符号位的byte,short,int,long
- 浮点数编译程序默认为double型,声明为float型变量后面必须加F。
- JAVA中的char型数据一定是无符号的,而且不允许用unsigned来声明char类型
- 在声明数组时,不能在方括号内指定数组元素个数
- 数组的索引从0开始
教材学习中的问题和解决过程
- 问题1:为什么双精度123456789.123456789强制转换成单精度时为1.23456792E8,而不是12.3456792E8
- 问题1解决方案:f=1.23456792E8相当于是将123456789.123456789的小数点前移变成1.23456789123456789*108,去掉小数的一半就变成1.23456789*108了,
- 若想控制误差,可以用strictfp。使用 strictfp关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。
当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.
- 问题2:P28页中提到如果想输出char型数组的引用,必须让数组a和字符串做并置运算,什么是并置运算?
- 问题2解决方案:在网上查询得到以下解答:
并置“&” 就是用来进行位和位矢量的连接运算
所谓位和位矢量的连接运算是指将并置操作符右边的内容接在左边的内容之后以形成一个新的位矢量
参考:并置语句
- 问题3:不理解Example3_7.java中求100以内的素数的方法
- 问题3解决方案:通过自己调试代码与询问同学理解了代码,若要求100以内的素数,有一种方法为从1开始的数与根号100进行取模运算,若所得余数不为0,则是素数。此代码类似,只是与100/2进行取模运算,再依次求余。
代码调试中的问题和解决过程
- 问题1:启动乌班图系统时显示出现内部错误
- 问题1解决方案:通过在网上查找,找到解决方案为在终端输入
sudo gedit /etc/default/apport
将enabled设置为0。
参考Ubuntu16.04 系统错误报告屏蔽尝试修改
-
问题3:在调试example2_5时,反复检查多次又出现以下错误,显示找不到符号
. -
问题3解决方案:通过再次检查代码发现是把
Scanner scanner = new Scanner(System.in);
中的第二个scanner少输入了一个c。 -
问题4:在调试example3_4时,输入209 显示209既是二等奖又是一等奖
-
问题4解决方案:没有在是二等奖后的语句加break;
-
问题5:在调试example3_9时,错误把System.out.println中的System首字母大写,显示错误
-
问题5解决方案:将system改正为System
代码托管
其他(感悟、思考等,可选)
- 在本周的学习中,代码量比上周增加了不少,对代码的理解也在加深,同时,敲代码的错误率在减少,平时敲代码时注意了大小写,空格等细节。
- 通过自学视频与教材,类比C语言对JAVA中的基本数据类型、语句有了了解,过程中遇到的问题都通过网络查询以及询问同学一一解决。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第二周 | 426/426 | 3/3 | 12/12 |