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

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

教材学习内容总结

  • print和println的区别:println会将发送给它的消息输出,然后将光标移到下一行的开始;print也会输出信息,但不会将光标移到下一行。
  • 在转义序列方面课本的内容比较容易理解,但在实际运用时遇到了问题。
  • 理解了Java的8种数据类型且Java默认所有整型数值常量为int型,浮点型数值常量为double型。不同类型的不可运算,但可以进行数据类型转换。
  • 学会了使用一些运算符,比如算数运算符、自增和自减运算符、赋值运算符等。并且知道运算符之间存在优先级,不遵守优先级运算会得出错误的结果。
  • 我认为最重要的就是Scanner类的交互式程序,初期比较难搞懂,但学会之感觉还是非常有趣的。

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

  • 关于print和println
    之前看书的时候看到这里就去实际操作了一下,如图
    我认为我理解了,print就是跟下一行连接着,而println是独立的一行。但是看到书上的题目SR2.4时,我认为输出的“One”应该和“Two”连着,但答案却不是,我意识到,我有点搞混print与哪一行连着了,是跟上一行在一起还是另起一行跟下一个在一起。后来又仔细看了看书上的解释后才彻底搞明白。

println方法会将发送给她的信息输出,然后将光标移到下一行的开始处,print不会将光标移到下一行。

  • 常量命名规则
    在看到课本中有关常量的部分时,总感觉他的名称怪怪的,比如“MAX_OCCUPANCY”,以至于我误以为这个名称是一个特殊的标识符,在定义常量时都得用这个,后来在练习书上的代码时,遇到了常量的其他名称,于是便上网查了一下才知道这是常量命名的一套规则。

不同的语言,在定义变量或者常量的时候,都有自己一套编码规则。这主要是为了提高代码的共享程度与提高代码的易读 性。在Java语言中,定义常量的时候,也有自己的一套规则。如在给常量取名的时候,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采 用大写字符,主要是跟变量进行区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。但是,为了在编写代码时能够一目了然的判断变量与常量,最好 还是能够将常量设置为大写字符。另外,在常量中,往往通过下划线来分隔不同的字符。而不想对象名或者类名那样,通过首字符大写的方式来进行分隔。这些规则 虽然不是强制性的规则,但是为了提高代码友好性,方便开发团队中的其他成员阅读,这些规则还是需要遵守的。没有规矩,不成方圆。 总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来进行连接多个单词。在定义final的数据不论是常量、对象引用还是数组,在主函数中都不可以改变。否则的话,会被编辑器拒绝并提示错误信息。

  • 课本SR2.35的b项
    题目:int iResult, num1=17, num2=5; double fResult, val1=12, val2=2.34;
    求fResult=num1 / num2 ;我认为答案是3.4 ;但事实上答案为3。我认为num1 / num2 的结果为3.4 ,正好fResult为double型的,所以答案为3.4。但事实上,num1和num2都为int型的数,相除结果也应为Int型,即为3。

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

  • 问题一
    在把写好的代码push到码云上去之后,发现一个地方需要修改,再次编辑运行后push时却出现问题,如图
    第一次遇到这样的问题,最后在助教的指导下在本地把上传到码云上的文件删除之后,便解决了问题。
  • 问题二
    在src目录下创建了一个文件lx.java,但是想要把他移到20172314目录下,尝试了 mv src/lx.java 20172314结果文件虽移动了但文件名由lx.java变成了20172314 , 如图
    再次使用mv src/20172314 lx.java后才达到了我的目的。
    从网上查到的资料如下

mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。

所以说,我是在20172314目录下操作的,无法将其移动到自己名下,第一步操作就把名字改了,而第二步同样又把名字改回来了。但我不知道第一步为什么会移动。正确的操作应该是```mv src/lx.java ./```或者在根目录下```mv 20172314/src/lx.java 20172314``` 
  • 问题三
    即上文提到的在转义序列方面遇到的问题。在练习使用\b和\r时,出现了如图所示问题




    字符串缺少,然后我也不知道为什么......希望可以得到大家的指教😜

  • 问题四
    在做课后题PP2.5时,输入的代码如图
    ,但发现编译运行后,最后一行是空白的,必须输入随便一个数字才可以退出,
    后来发现,我所编写的代码的最后一行Celsius = scan.nextDouble是指从标准输入流读取一个数据,而在他的上一行已经完成了所要求的输出,所以最后一行是多余的,把它删除即可
    同时,在查找资料中发现,next ()与nextLine()是有区别的,我所遇到的问题是前者的特性,其输入不可为零,必须输入数据才可以,而后者则不存在这样的问题,直接enter即可。

代码托管

上周考试错题总结

  • 错题1:A Java program is best classified as (一个Java程序被归为软件类最合适)
    分析:误认为Java为存储器,也是凭感觉选的,百度了一下软件的定义,解释得很清楚,

Java程序可归为“与电脑程序相关的文档”。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。

  • 错题2:When executing a program, the processor reads each program instruction from (当执行一个程序时,处理器从主存储器读取每个程序指令)
    分析:主存储器用于保护程序和数据,CPU(中央处理器)执行程序指令。此题错在基础概念掌握不牢固。

  • 错题3:The ability to directly obtain a stored item by referencing its address is known as (通过引用地址直接获得存储项的能力被称为随机存取)
    分析:随机存取指存取任何项目都同样容易,并且访问任何项目都可以根据其地址进行检索,随机存取是RAM和ROM的存取形式。

  • 错题4:Java is an example of a(n) (Java是一个高级语言和第四代语言的例子)
    分析:我知道他一定是高级语言,是不是第四代语言就不确定了

  • 错题5:The main method for a Java program is defined by (Java程序中的主方法是由public static main(String[ ] args)定义的)
    分析:我选择的答案在末尾加了“;”,这是多余的。

  • 错题6:The instruction: System.out.println("Hello World"); might best be commented as (这个指令最好被注释为)// used to demonstrate an output message (用来演示输出信息)
    分析:java程序注释是为了帮助别人更好地理解程序,可以是编辑思路也可以是程序作用,总而言之就是方便别人理解,我误选的将"Hello World"打印到屏幕上,这个作用是显而易见的,并没有帮助理解,所以是错误的。

  • 错题7:Which of the following is a legal Java identifier? (下面哪个是合法的Java标识符?) i
    分析:我误选的是class,事实上,class是一个保留字,不能用作标识符;而i虽然没有描述它的使用,但他是合法的。

  • 错题8:A unique aspect of Java that allows code compiled on one machine to be executed on a machine of a different hardware platform is Java's (Java的独特之处在于其bytecodes (字节码),它允许在一台机器上编译的代码在不同的硬件平台上执行)
    分析:这道题的关键在于后半句,java中能允许在一台机器上编译的代码在不同的硬件平台上执行的就是其字节码,java编译器先将源代码编译成类似机器语言代码的低级形式的java字节码,然后只要处理器平台上有java虚拟机(JVM)就可以执行java字节码。

  • 错题9:Which of the following would be a good variable name for the current value of a stock? (下面哪个是关于变量“current value of a stock”的最佳命名?)CSV
    分析:我选的答案是curstoval,这个名字没有表述其真实含义,且比较长。

  • 错题10:Java byte codes are directly executable whereas Java source code is not. (Java字节码是可以直接执行的,而Java源代码则不是。)false
    分析:java源代码和字节码都是可以执行的,都必须编译为机器语言。java字节码与真正的机器语言代码之间的区别在于:字节码独立于处理器类型,可以在不同的处理平台之间移植。

  • 错题11:The word "Public" is a reserved word. ("Public"是一个保留字。)false
    分析:public是一个保留字,但java语言对大小写敏感,Public就不同于public。

  • 非错题1:Volatility is a property of (易变性是随机存储器RAM的性质)
    分析:易变性是指电源关闭时内存内容物就会丢失,RAM与主存储器即内存可以互换,是储存动态程序和数据的内存,所以说RAM是对的。

  • 非错题2:Which of the following is not syntactically legal in Java? (在Java中,下列哪一条语法不合法?)s t a t i c main(String[ ] args)
    分析:java编译器不会将static识别为静态,会将空格符作为实体之间的分隔符。

其他

在这周的学习过程中,最大的感受就是相比前些日子而言,所遇到的棘手的问题明显减少,之前总是遇到一些根本不知道怎么办的问题,也有学长说万事开头难嘛,当时就觉得不仅仅是因为刚开始接触的问题,Java的学习就是那么让人抓狂,现在渐渐的进一步学习之后,没有那么多乱七八糟的问题随时冒出来,主要就是学习技能了,尤其是在学习了交互式程序之后,你可以跟你的程序有小小的互动了,总算体会到了一点Java学习的乐趣,还是挺有意思的了😄

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 93/200 1/1 20/20
第二周 305/500 1/1 28/38
posted @ 2018-03-18 11:25  FYiW  阅读(203)  评论(8编辑  收藏  举报