20165207 第二周学习总结
问题
第一周的准备工作为第二周能够心无旁骛地学习创造了条件。我第二周的学习内容主要以学习二三章内容、输入编译教材代码以及教材课后题的练习为主。
我对于这三部分的遇到的问题的内容总结如下。
教材
- 第22页进行类型转换的运算:
byte a = (byte)128;
byte b = (byte)-129;
a b 得到的值分别是-128和127。把被转换的数相应的9位的补码从低到高截取8位,这样能够得到结果,或者用补码“模”的想法进行考虑,在溢出之后进行强制转换会发生钟表一样的循环,因此会有-128和127这两个结果。
- 第二十六页,Java允许使用int型变量为数组指定元素个数,这个“动态”的分配方式与C语言有区别,应当着重记忆。
代码
-
第二章代码Example2_4输出语句中使用“+”来衔接着输出对应数组元素的值,缺少加号编译无法通过,而且显示的不是缺“+”。
-
第二章代码Example2_3中reader对象调用nextDouble方法,输入的时候忘记后面的括号,编译不通过。
-
第二章应用举例折半查找的代码,没有声明变量middle。
-
第三章第一个例子的程序,使用按位异或进行加密,然后又使用异或运算进行解密。我借此了解的逆运算还是的概念。
课后题
-
31页课后题2(6),做题的时候我不了解经过初始化但未赋值的数组的元素是0,当时觉得BC都有问题。周四上课后,我借助娄老师介绍的jdk1.9里面的jshell,非常方便的弄明白了这个问题。
-
32页课后编程题第二个,要求输出所有的希腊字母。我的思路是通过希腊字母的Unicode字符表中的位置来进行循环控制,然后依次输出,但我并不知道希腊字母的开头位置以及总共的个数。首先,查看软键盘了解到一共有50个
我假设开头是α写了一个程序
但是编译运行之后输出的结果并不是所有的希腊字母,后面有好多都是不知道是什么东西的东西
再然后我又把A当成了字符集第一个希腊字母试了下,并且去掉了换行改成了用逗号分隔
然后输出了应该是正确的结果。
一共50个希腊字母。
- 48页2(3),据我所知如果出现“找到……需要……”的提示,应该是因为被赋给的值超出了取值范围。但这道题'a'的位置显然是97,97加上12也要比最小范围的byte所对应的上限127要小。因此我又使用jshell进行测试,截图如下。只有C选项编译错误,但描述与题中并不相符,没有显示“可能损失精度,找到int需要char”。如图
代码行数统计
脚本运行截图如下: