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

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

教材学习内容总结

本周内容主要为书的2.1-2.6的内容:
1.print与println的区别与使用
2.字符串可以用“+”来拼接
3.转义序列的应用
4.基本数据类型(4种整型、2种浮点型、布尔型和字符型)
5.还有感觉恶心、难懂的交互式程序Scanner

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

  • 问题1:转义序列中的"\t"、"\n"、"\r"的作用不清楚
  • 问题1解决方案:仿照例2.4在程序中试用,但是刚开始的时候在System.out.println("Roses are red.")的开头位置添加,结果"\n" 与 "\r"效果一样,在听过老师的讲解和教学视频的解析,明白两者在效果上是一样的,但是在意义上是不一致的,"\n"表示是单纯的换行,"\r"表示是回车换行。
  • 问题2:整型与浮点型的区别与联系
  • 问题2解决方案:整型包含的4种形式是依据存储空间的大小而表示不同范围内的数据。整型类型被老师说成是一两的碗、二两的碗等,很形象化的展示出之间的区别,像一个数字“8”在byte中存储就是一个字节,在int中就是四个字节表示。浮点型的"float"与"double"也同样类似。对于不清楚变量的取值范围,就应当选个合理的,或是较大的内存空间的数据类型。
  • 问题3:组合运算符与正常的运算符之间的区别
  • 问题3解决方案:在看了这个内容之后,认为两者没有区别,在形式上组合运算符比正常的运算符在运用上更为简洁,在教学视频上的讲解,给出了更为明确的解释,例如同样是"short s = 4" 后面用两种不同的形式,"s = s +5"与"s +=5"却是一个true,一个false。原因在于开始的4是以两个字节的存储空间进行存储,而后面的5以int的存储空间进行的,为4个字节,两次运算,先相加在赋值,不能自动转换。而后者是一次运算,左右两边的和赋值给左边,可以自动换行。
  • 问题4: 例2.8和例2.8的内容量很大,一直不懂输入的“Scanner scan = new Scanner(System.in)”,一直就照着做,模仿着教材的内容,进行练习和实验。

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

  • 问题1:按照老师教的步骤进行javac和java的翻译结果神奇般的找不到,找不到。

  • 问题1解决方案:以为这个电脑开始罢工了。结果一直向上翻记录,原来自己把移动的快捷键记成删除的快捷键,把源代码删掉了,还一直用java译码器进行编译,捣成半天,还得重新来一遍,气死!

  • 问题2:PP2-5的操作过程

  • 问题2解决方案:
    (1)在进行第一次输入的时候,忘记了数据类型的不同,一个浮点型,一个整型,两者不统一,没有进行强制转换,然后在前面加了一个强制转换的括号,然后又一个劲的弄,结果还是一样,还是提醒,后来通过同学的一番指出,才发现自己后面还没有加括号,脑里的思路还一直以数学的计算方式来进行,什么没有括号也行,什么两个数之间没有符号也可以进行乘法运算之类的。必须把两者划清界限,才能正常的计算。
    (2)在进行定义变量的时候,定义为Double型的华氏温度值,结果敲了一堆整数的计算式,以至于运算的时候输入一个含小数的数,出来的时候一堆问题,数字“5.0”为了偷懒输入“5”,还得为了自己的偷懒重新改一遍。

  • 问题3:PP2-3的操作过程

  • 问题3的解决方案:
    (1)在输入两个浮点数,并写出它们的和、差及乘积的时候,忘记定义和、差及乘积的变量了,结果程序一出来,一堆一堆的错误提醒,“找不到符号”这句话想了半天,有重新翻看代码,一直米有发现错误问题。后来对照例题,一点一点修改,才发现自己就是没有定义变量造成的。
    (2)后面的输入由于心急,造成把字符串拼接弄成了逗号,结果“实际参数列表和形式参数列表长度不同”感觉自己对这个错误解析特别不理解,感觉解析看不懂,还得自己从代码处入手。

  • 问题4:PP2-2的操作过程

  • 问题4的解决办法:读取的三个整数,进行运算的时候,突然想到如果三个数出不开怎么办?考虑了半天结果就是输出整数部分,小数部分就是没有,在考虑过什么四舍五入之后,认识到后面的3是整型,所以在进行结束之后,就保留了整数部分,把3改为3.0就可以正常输入了。

代码托管

上周考试错题总结

  • 错题1 通过引用地址直接获得存储项的能力被称为 随机存取
    解析: 随机存取代表同一时间访问一组序列中的一个随意组件。随机存取存储器的基本结构可分为三个部分:存储矩阵,地址译码器,读写电路。其中的地址译码器就是解决本题的关键。译码器可以将输入地址译为电平信号,以选中存储矩阵中的响应的单元。开始理解不透彻,各个名词混淆选错。
  • 错题2 试图解决问题之前,把一个问题分解成可控制的几部分是很重要的,因为大多数问题太复杂,以至于不能作为一个单独大型的活动来解决
    解析: 任何有趣的问题都太复杂,不能简单地作为单一的活动来解决。通过分解问题,我们可以为每一块构建一个小的解决方案,然后整合各个部分。答案D是正确的,但这不是我们将问题分解成碎片的原因。本题的各个选项说法都很正确,外加一个E选项,以至于没有好好读题就认为各选项都对。
  • 错题3 关于Java这种程序设计语言,下面的哪种说法是不正确的?它是一种执行程序前不需要被转换成机器语言的语言
    解析: 任何语言都是需要转为机器语言才能够执行,选项虽对但这个和JAVA的程序设计语言没有关系,加之万能的E选项,导致自己又被迷晕了。
  • 错题4 Java程序中的主方法是由public static main(String[ ] args)定义的
    解析: 本题纯属误选,敲了已经一周的代码,这个已经快背下来了,A,D选项比较错误明显,而B选项的分号没看到导致选错。
  • 错题5 System.out.println("Hello World"); might best be commented as这个指令最好被注释为**// used to demonstrate an output message (用来演示输出)
    解析: 答案中的注释解释了为什么该指令出现在程序中。而我的错误选项是该指令显而易见就能看出来的,无需注释。

“注释应当揭示程序员编写程序的初中或意图。”

  • 错题6 在Java中,下列哪一条语法不合法?s t a t i c main(String[ ] args)
    解析: 由于Java编译器将空白(空格)作为实体之间的分隔符,所以Java编译器不会识别“static”。其他语句都是合法的。A选项是定义程序名字,B选项是输出Hi,C选项是输出空白。只有D选项是错误的。
  • 错题7 下面哪个是合法的Java标识符?i
    解析: 类”这个词在Java中是一个保留字,不能用作标识符。而剩余选项中,标识符含有了除字母、数字、下划线和美元符号以外的符号。
  • 错题8 Java的独特之处在于其字节码,它允许在一台机器上编译的代码在不同的硬件平台上执行。
    解析: Java程序的翻译过程是首先将它编译成字节码,它在体系结构上是中立的,无论架构平台是什么,都可以使用它们。要执行该程序,字节码必须由Java编译器进一步编译或由Java虚拟机解释。其执行要求就是处理器平台上必须有JVM。

"Java字节码与真正的机器语言代码之间的区别在于:字节码独立于处理器类型。这种特性使得Java具有结构独立的显著优势,易于在不同类型的处理器平台之间移植。”

  • 错题9 关于Java的语法和语义,下列哪一项是正确的?Java编译器可以判定你是否遵循正确的语法,但不能判定正确的语义。
    解析: 所有语言的编译器都有检测语法错误的能力,因为语法错误的使用会导致编译器无法正确地翻译代码。然而,编译器无法遵循程序的语义,因为这需要一定程度的理解程序要做什么,而计算机没有理解的意义。没有好看编译器、编辑器、翻译器的作用,才导致选错。
  • 错题10 下列Java命名规范中,哪个是关于“store stomers”类的最佳命名?StoreCustomer
    解析: 单词应该连接在一起而没有空格,或者与“_”字符连接。忽略这条限制,错误的选择了Store Customer。
  • 错题11 一个彩色图像被分解成单个像素(点),其中每个像素表示3个表示图像中红、绿和蓝色的亮度值
    解析: 黑白图像是用0和1存储的,而彩色图像是用三个值存储的,一个是红色的程度,一个是蓝色的程度,一个是绿色的程度。以前在电子政务课上老师就讲过,自己一看A选项对就没看别的,结果问题是彩色图片,RGB用红绿蓝三种颜色表示的。
  • 错题12 在一个Java程序中,下面哪个字符不需要有与之相关的“结尾”字符?<
    解析: {用于打开一个块,因此}需要关闭该块。(用于打开表达式,因此)需要关闭表达式。[用于启动数组索引,因此]需要关闭数组索引。而<和>表示大于和小于,不需要关闭符。
  • 错题13Java字节码是可以直接执行的,而Java源代码则不是。FALSE
    解析: Java源代码和Java字节码都不是可执行的。两者都必须被编译或解释为机器代码。Java字节码是有用的,但是它们是独立于机器的但是半编译的代码,它允许您的Java代码通过Internet传输并在另一台计算机上执行,即使其他计算机是完全不同的类型。所有程序的语言都必须翻译成的机器语言才能执行的。
总结:第一周的学习发现自己什么都不懂,一直忙于敲代码,写博客的,忽略了最重要的书本内容,而且第一章自己在没考试之前就看了几遍,没有细细的推敲理解,通过考试才知道自己懂的不过这些名词,而不是名词背后所代表的意义。

感悟

本周各种课程、活动开始陆续增多,java的知识内容开始加深,感觉有些吃力,尤其是在经过第一次考试之后,感觉知识更加可怕自己对书本的不够深入的了解,没有更细致的学习,外加上自己改不了的粗心马虎造成考试的分数较低,有些题目大致扫一眼就选选项,只能分低了~还有更为可怕的是下下周就要进行全英文的考试,想想这事就顿生凉意,汉语的还都不会,就要来英文的,可怕至极,加强英语的训练迫在眉睫,唉!压力山大。还有自己一直不能改的马虎错误,以至于进行交互式程序的练习,总是出现错误。合理的安排时间,提高效率的学习才能是努力赶上同学的诀窍。刚步入编程的大门,就感觉前路漫漫,但与java的编程绝不是后会无期。压力就是动力,动力足了,经过时间的洗礼,成功就在不远的前方。给自己加油!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 136/200 1/2 15/20
第二周 570/500 1/4 20/38
 |
  • 计划学习时间:20小时

  • 实际学习时间:20小时

参考资料

posted @ 2018-03-16 23:29  三金哥  阅读(252)  评论(4编辑  收藏  举报