20172306《Java程序设计》第五周学习总结

20172306 2016-2017-2 《Java程序设计》第五周学习总结

教材学习内容总结

第五章主要学习了if以及while的语句的运用
运算符:== 代表相等,是两个之间的内存地址相等;这个地方我知道了=和是不同的,=代表的是赋值,将某值赋给某值,这两者是有很大区别的。
浮点数比较:绝对值小于精度,接近相等
字符串比较string1 . equals(string2),尽管是比较的是字符串,但是实质上是比较字符。还有compareTo 也可以用来比较字符串。这个在前面有学习。
算数运算符优先于相等性运算符和关系型运算符,在例题中,while (str.charAt(left)
str.charAt(right) && left< right)这里面,先要满足&&左面和右面,再考虑&&。
第六章主要学习了switch语句,其中不可缺少的是default,而break不是必不可少的
条件运算符,主要要了解,条件运算符只是一个运算符而不是语句。
do的语句,主要和while的不同是do先循环再判断,而while是先判断再循环。
for语句,我个人觉得for是一个很方便的语句,而且比较容易懂。

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

  • 问题1:在5.4.1中,无限循环中有一个下溢错误,我不懂这个下溢错误是什么意思?
  • 问题1解决方案:我在百度上查找了有关的知识,自我理解就是数据溢出包括上溢和下溢,上溢就是说你想用一个int类型来保存一个非常非常大的数,而这个超出了int类型所能表示的最大的数的范围,下溢也是这个道理,你要用double来表示一个非常非常小的数,超出它所能表示的最小数时,就会发生数据溢出错误。
  • 问题2:在学习回文的时候,我有这样的一个疑问,就是在我运用这个回文的时候,是否只能利用字符,而不可以用空格、符号?对于回文来说,是否对于字符的大小写的要求也很严格?
  • 问题2解决方案:对于这个问题,我现在知道,因为java中是对大小写很严格的一种语言,所以回文也依旧如此,而对于是否可以运用空格和符号,我觉得是可以的,只是不经常利用,而在判断回文时,这些是否作为判断标准,这一点我还在查找。
  • 问题3:上篇博客中,我有提到我不是很理解形参和实参的差别,这周在看例题的时候,我依旧对于这两者很模糊,尽管上篇博客中我写了它的定义,也理解了但是用的时候,就不能准确判断。
  • 问题3解决方案:问了同学,也看了概念,基本的理解是,一般编写类中有形参,在编写类中,在你声明的括号中一般是形参,在你要运用这个类时,声明的括号里的应该就为实参。但是这个问题,我觉得自己还是理解的不透彻。

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

  • 问题1: 本来我是要编12*12的乘法表,以上是我编的和运行出来的样子。都是相同的数字进行相乘,我就很不解。
  • 问题1解决方案:我觉得在自己写一个程序的时候,不断地尝试是一个很不错的过程。上面的虽然运行成功了,但是却和我要的不同,我看了。主要是因为,a 加1时,b 也同时加了1;导致在循环的时候,两个数都在不断地增加,所以就会出现上面的情况,后来我用了两个判断语句,成功运行了12*12的乘法表
  • 问题2:不知道有没有人和我一样出现了这样的错误,
  • 问题2解决方案:这样的问题,主要是在运用if的嵌套语句的时候,经常会因为某些原因,导致{ 或}少了或者多了。还有,if之后,你可以没有else及其后续,但是如果你有else,则你就要编上else之后应该输出什么。这个代码我没有照,不过这是我出现这样情况的主要问题,现在已经解决了
  • 问题3:我在编写石头剪子布的时候,出现了很多问题,但是都根据错误一点一点解决了,这是我其中的一些错误
  • 问题3解决方案:第一个错误,是因为在前面我没有定义wanjia这个变量;第二个问题是我的com1是玩家对于Scanner 的一个对象,而当时我只声明了一个对象,我想要有输出终止的程序,所以后来我又重新声明了一个对象。对于第三个问题,我知道了对于我程序中的a b c 这个只是程序中的一个变量,如果你用键盘输入这个变量,是什么效果都没有的,而要输入的是实际的参数。

代码托管

上周考试错题总结

  • 1.In order to preserve encapsulation of an object, we would do all of the following except for which one?
    A Make the instance data private
    B Define the methods in the class to access and manipulate the instance data
    C Make the methods of the class public
    D Make the class final
    E All of the above preserve encapsulation 本题选D,
    这题意思是为了封装为了保持一个物体的封装,除了哪一个之外,我们还会做所有的事情?
    a.使实例数据私有
    b.定义类中的方法来访问和操纵实例数据
    c.使类的方法公开
    d.用final在类中
    e.以上所有的保存封装 封装的主要目的就是不让别人修改和访问自己封装的东西。这里面final不一定必要;对于第三项,访问和操纵实例数据的方法被公开,以便其他类可以使用该对象。
  • 2.Consider a method defined with the header: public void foo(int a, int b). Which of the following method calls is legal?
    A foo(0, 0.1);
    B foo(0 / 1, 2 * 3);
    C foo(0);
    D foo( );
    E foo(1 + 2, 3 * 0.1); 本题选B,这道题,因为参数都是整数型,所以排除了E,因此选了B
  • 3.The expressions that are passed to a method in an invocation are called(在调用中传递给某个方法的表达式被称为)
    A actual parameters(实际参数)
    B formal parameters(形式参数)
    C formal arguments(正式的参数)
    D formals
    E any of the above 本题选A。formals(正式参数、正式参数)是在方法的标题中给出的。实际的参数(实际参数、实际参数)是实际在调用中传输到方法的表达式。
  • 4.What happens if you declare a class constructor to have a void return type?(在类的构造函数时有了void返回类型会发生什么)
    A You'll likely receive a syntax error(你可能会得到语法的错误)
    B The program will compile with a warning, but you'll get a runtime error*(你编译的时候会有警告,在运行时会有错误)
    C There's nothing wrong with declaring a constructor to be void(没有任何的问题,在你使用void时)
    D The class' default constructor will be used instead of the one you're declaring(类的默认构造函数将被使用,而不是您所声明的)
    E None of the above 本题选D,这里面,在构造类中没有void的返回类型,但是当你加上了,它就会变成普通的而不是你所声明的,但是在这里面仍旧是有构造函数的,系统中会默认。
  • 5.A method defined in a class can access the class' instance data without needing to pass them as parameters or declare them as local variables.
    A true
    B false 本题选A 类中定义的方法可以访问类的实例数据,而无需将它们作为参数传递,也无需将它们声明为局部变量。实例数据对于所有类的方法都是全局可用的,因此这些方法不需要作为参数接收它们,或者在本地声明它们。如果在方法中本地声明与实例数据相同的变量,那么实例数据将在该方法中“隐藏”,因为引用将是本地变量。
  • 6.Defining formal parameters requires including each parameters type.(定义正式的参数需要包括每个参数类型。)
    A true
    B false 为了让编译器检查方法调用是否正确,编译器需要知道传递的参数的类型。因此,所有正式的参数(在方法头中定义的参数)必须包括它们的类型。这是使Java成为强类型语言的一个因素。我觉得应该正确理解正式的参数,因为它是方法头定义的参数,所以要保证其完整性
  • 7.Accessors and mutators provide mechanisms for controlled access to a well-encapsulated class.(存取器和突变器提供了对一个良好封装的类进行受控访问的机制。)
    A true
    B false 本题选A 存取器提供对那些否则无法访问的变量的读访问。突变器提供对其他难以访问的变量的写访问权
  • 8.During program development, software requirements specify
    A how the program will accomplish the task
    B what the task is that the program must perform
    C how to divide the task into subtasks
    D how to test the program when it is done
    E all of the above 本题选E 在程序开发期间,软件需求指定a.程序将如何完成任务b.这个程序必须执行的任务是什么c.如何将任务划分为子任务d.如何在完成后测试程序e.上面所有的,这道题在书上是有的。
  • 9.Static methods cannot
    A reference instance data
    B reference non-static instance data
    C reference other objects
    D invoke other static methods
    E invoke non-static methods 本题选B 静态方法不能a.引用实例数据b.引用非静态实例数据c.引用其他对象d.调用其他静态方法e.调用非静态方法,这也是书上写的。
  • 10.Inheritance through an extended (derived) class supports which of the following concepts?
    A interfaces
    B modulary
    C information hiding
    D code reuse
    E correctness 本题选D 通过扩展(派生的)类的继承支持下列概念中的哪一个?a.接口b.modularyc.信息隐藏d.代码重用e.正确性
  • 11.Which of the following interfaces would be used to implement a class that represents a group (or collection) of objects?
    A Iterator
    B Speaker
    C Comparable
    D MouseListener
    E KeyListener 本题选A 下列哪一种接口将被用来实现一个表示对象组(或集合)的类?a.迭代器b.演讲者c.类似的d.MouseListenere.KeyListener
  • 12.The goal of testing is to
    A ensure that the software has no errors
    B find syntax errors
    C find logical and run-time errors
    D evaluate how well the software meets the original requirements
    E give out-of-work programmers something to do 本题选C 测试的目标是a.确保软件没有错误b.发现语法错误c.查找逻辑和运行时错误d.评估软件满足原始需求的程度e.给不工作的程序员做点什么
  • 13.Interface classes cannot be extended but classes that implement interfaces can be extended.
    A true
    B false 本题选B 接口类不能被扩展,但是实现接口的类可以被扩展。a.真正的b.假 解释:任何类都可以被扩展,无论它是一个接口,还是实现一个接口,或者两者都没有。唯一的例外是,如果该类被显式地用“final”这个词进行修饰,在这种情况下,它不能被扩展。
  • 14.All objects implement Comparable.
    A true
    B false 本题选B 所有对象实现可比性。a.真正的b.假 解释:可比性是一个接口,类必须定义compareTo方法,并显式地声明它实现了可比较的可比较的实现。大多数类都没有实现可比性

其他(感悟、思考等,可选)

 这周的学习我觉得自己用的时间比上一次用的时间多一些。但是回顾自己之前的学习和考试,总是倒数的几名,还是很难过的。自己总结一下,归根结底就是自己其他的事情太多了,导致自己学习java的时间太少了,缺少琢磨和反思的过程,这是我知道的自己在学习这科方面的问题。比较后悔自己低估了java,高估了自己。我觉得慢慢学吧,很多东西都是循序渐进的过程吧,而且我觉得java在编程时真的是一个不断去改动的过程,不断地发现错误,不断地去尝试,最终得到自己想要的,可能过程中会出现很多很多错误,但是最终还是会成功。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 193/200 1/1 20/20
第二周 193/440 1/1 22/38
第三周 445/895 2/2 20/60
第四周 885/1780 1/1 43/90
第五周 775/ 2555 1/1 55/120

参考资料

原文地址:https://www.cnblogs.com/lc1021/p/8757553.html