20165202 第2周学习总结

20165202 2017-2018-2 《程序设计与数据结构》第2周学习总结#

教材学习内容总结

Ch2###

  • Java基本数据类型包括boolean、byte、short、char、int、long、float、double
    逻辑类型:boolean,赋值只能使用true和false,不可使用0和1;
  • 类型转换运算:精度由低到高排序:byte、short、char、int、long、float、double
    (类型名)要转换的值当超过变量范围时将导致精度的损失。
  • 关于Scanner 类使用:
    必须在代码开头输入import java.util.Scanner;
    新建 Scanner 变量:```Scanner xxx = new Scanner(System.in);``
  • 数组名.length可得知数组中元素个数
  • 数组为引用型变量,声明数组和创建数组可以一起进行float boy[] = new float[4];
  • System.out.println(""+a)输出char型数组的引用。

Ch3###

  • Java允许把不超出byte、short和char的取值范围的算术表达式的值赋给byte、short和char型变量。
  • 位运算符计算规则与上学期HDL的按位运算相仿。
  • (新概念)instanceof运算符:左面的操作元是一个对象,右面的是一个类,当左面的对象是右面的类或子类创建的对象是,运算结果为true,否则为false。
  • 2-6节关于控制语句的内容介绍与C语言相同。
  • 遍历数组:for(声明循环变量:数组的名字)

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

  • 问题1:对于新的Scanner 类不太理解
  • 问题1解决方案:结合Example2_3、2_5 、3_9,使用Scanner xxx = new Scanner(System.in);,等待键盘输入后调用reader.nextXXX()方法获取输入数据。
  • 问题2:P22例子2
   byte b = (byte)(-129);```
 结果为a=-128,b=127,我不太理解运算过程
- 问题2解决方案:我百度了一下,参考[作业帮解答](https://www.zybang.com/question/ff08650895c5d44819c4734f2b3050d9.html)
 Java中正数用源码表示,负数用补码表示,第一位是符号位。
 所以对于128和-129,他们的编码分别是:
 0000 0000 0000 0000 0000 0000 1000 0000
 1111 1111 1111 1111 1111 1111 0111 1111。
 对于a来说,1000 0000是负数(第一位为1),它的绝对值是1000 0000即128,
 而对于b来说,0111 1111是正数,值为127。
 
##**代码调试中的问题和解决过程**
(本周练习书中代码问题较少,在了解vi及javac使用后,仅个别为编译误输入错误)
- 问题1:课本P20代码中'ぁ'字无法输入
- 问题1解决方案:参考蓝墨云班课中同学给出的解答,安装日文输入法,同时该字符有大小写问题:是这个ぁ,不是这个あ。
- 问题2:P32习题3(5)编译失败
 ![](https://images2018.cnblogs.com/blog/1297055/201803/1297055-20180311013018716-657603553.jpg)

- 问题2解决方案:```b[0][1] = b[1][3]```中缺少了“=”导致编译失败,有时一个小的定义错误可能会引发多行代码的问题。
![](https://images2018.cnblogs.com/blog/1297055/201803/1297055-20180311013042825-1204482505.jpg)

- 问题3:在bin、src两个目录下设ch目录方便查看不同章节代码,但不知道该如何进行编译
- 问题3解决方案:
  ```vi src/ch3/Example3_8.java```
   ```javac -d bin/ch3 src/ch3/Example3_8.java```
   可直接操作
   ![](https://images2018.cnblogs.com/blog/1297055/201803/1297055-20180311013352760-1295373454.jpg)

- 问题4:Example2_1编译显示未结束的字符串
 ![](https://images2018.cnblogs.com/blog/1297055/201803/1297055-20180311113527498-1183869555.jpg)

- 问题4解决方案:
 ```System.out.println(position+"位置上的字符是:"+(char)position);```缺少最后面的“)”导致行8、10均出现错误

##[代码托管](https://gitee.com/BESTI-IS-JAVA-2018/20165202jhs)
![](https://images2018.cnblogs.com/blog/1297055/201803/1297055-20180311003119555-357939904.jpg)
## **上周考试错题总结**
参见补交博客《[20165202 第二周测试课下选做](http://www.cnblogs.com/jhs888/p/8537020.html)》

## **感悟与思考**
可以说周四的考试才是真正学习java的开始,在上周的学习中,我还只是简单的观看视频,把代码输入书中,以为自己掌握了所学内容。但在实际编程考试中,问题就暴露出来了:自己对于代码根本没有理解,一旦改变题目,立刻无从下手。直接导致了我在随堂测验两科都没有来得及提交,关于第一堂课老师讲的包的用法更是一知半解。所以,当天下课后我就把测试未完成的代码重新写完,并把相关内容用博客的形式补全。第一次测试改变了我的学习态度,我发现只有深入的理解与练习才是学习,本周我把所有例题代码及课后练习代码全部写了一遍,并且通过百度和问同学来理解代码含义,虽然之前的C语言学的很渣,但我相信兴趣是学习的动力,今天一天的代码量有些大,达到300多行,但是在看似枯燥的练习中我感觉自己的熟练度在提高。娄老师提到的将一周代码行数目标分散开,我认为很有道理,提前动手慢慢消化,一天完成两章内容的近400行确实较为疲惫。本周我还帮助同学重装了虚拟机,对移植VDI和ubuntu的配置、git命令的使用有了新的认识,遇到了许多问题并不断尝试解决他们。同时在敲代码的过程中,结合预备作业的vim使用学习以及Linux常用命令,我的编译速度精度都在提高,只有真正在写的过程中才会研究怎样提高效率、怎样解决问题。在完成一次次编译调试运行的过程中,最后能看到java xx的顺利运行也是一件很开心的事。娄老师所说的“做中学”我很赞成,但我更喜欢“乐中学”,如果一门学科能给你带来快乐,有了特殊的“动力”,源自热爱,学无止境!
## **学习进度条**
|            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|
| --------   | :----------------:|:----------------:|:---------------:  |
| 目标        | 5000行            |   30篇           |     400小时      |    
| 第一周      | 24/24           |   1/4            |       15/15    |    
| 第二周      | 423/423          |   2/6            |         14/29     |
原文地址:https://www.cnblogs.com/jhs888/p/8542588.html