《Java程序设计》第三次学习总结

学号 《Java程序设计》第三次学习总结

教材学习内容总结

JAVA Fundations : 数据结构。
(1000字以内总结一下本周学习内容,尽量不要抄书)

  • 看完了第五章(即:JAVA程序设计的第八版的第四章和第七章)。
  • 一个类由两部分组成:数据和方法,即:成员变量(也称为域变量(Filed Variable)或者 实例变量)和成员方法。要区分好成员变量与局部变量之间的差异。成员变量的作用域是整个类,而局部变量是某个方法之中(局部变量也仅仅只是在某个方法中定义的)。
  • 对于大多数的类而言得去自己去改写toString()方法。因为默认的情况下,调用Syetem.out.println("object");时会默认调用toString();方法,打印的是这个对象在内存中的一些信息(我们看不懂,所以意义不太大,只知道它包含了这个对象在内存中的信息)。所以,我们改写toString();方法后,可以让Syetem.out.println("object");输出一些更加有意义的字符串,可以让我们更好的获得某些相关信息。
  • 针对基本类型而言。对于类中的那些成员变量(也称为域变量,实例变量),Java会自动初始化(如果我们没有初始化,默认情况下,初始化为0,boolean为假),但是,JAVA不会默认初始化局部变量,因此,最好在声明数据(即:声明变量时)初始化它。
  • 封装性:对象的实例数据只能由对象自己来修改,类A之外的代码,是无法去访问以及修改A类之内的变量。

  • 可以通过对象去调用setxxx(); 方法去修改变量,或者通过类名去调用方法(针对类方法)。注意:为客户提供服务的方法,必须声明为public。

  • 设置器:setxxxx()和访问器getxxxx()。通过这两个方法来操作成员变量。对成员变量的操作只能是在方法之中!

  • 调用方法时要注意是否是否是在同一个类中?一个JAVA程序是有若干个类组成的。所以才会出现这个调用的问题。


  • 构造方法通常用于初始化对象。(这个初始化对象的作用是方便我们去使用对象,类似于:康师傅这个品牌下面的“红茶”和“绿茶”,在初始化的时候瓶子里就装满了相应的茶,如果不做相应的初始化,就需要我自己拿着瓶子去装对应的饮料,这就很麻烦了,竟然还我自己去动手装,我只想拿到瓶子我就能喝到我想要的饮料。)

  • 默认的构造方法里什么也没有,不会对新创建的对象有任何影响。

第七章总结:

  • 软件开发的步骤:


  • 明确类和对象:首先,先确定问题描述中有哪些对象?对象通常是名词,找出对象以后再去把这些对象分类,得到需要编写的”类“有哪些。接下来就是编程了。

  • 静态方法只能使用静态变量,不能使用成员变量(因为成员变量很有可能还没有”诞生“,即:被实例化)。反过来,成员方法能够使用静态变量。

  • 所有的类共享”静态变量“。类比于:所有的同学去打水是改变的同一壶水的水量。这个“水壶”就是一个静态变量。

  • 类间的关系:聚合(也称:关联)、依赖
    聚合就是:has a 的关系。如:汽车有底盘。这里:汽车是一个对象A,底盘是另一个对象B。因此:A has a B。A类对象关联与B类对象,或者:A类对象组合了B类对象。

  • 依赖就是:is a 的关系。类A是类B中某个方法的参数或者类B的某个方法的返回的数据类型是A类对象。即:B类中有一个方法是:b_Class_Method(A object_a); 或者 A b_Class_Method(); 那么B依赖于A。(没有A类就不会有B类呀)

  • this 代表正在执行该方法的那个对象。是一个代词的意思。注意:类方法中不能使用this,因为this 很有可能还没有"诞生"

  • “接口”表示一组公共的方法(函数)。类通过实现定义在接口中的每个抽象方法来实现这个接口。注意:在IDEA中实现接口使,除了要有implements 关键字之外,还要有:<实现接口的类名> 。说到IDEA,IDEA中可以使用相对路径,但是起点不是源代码在的文件夹,起点是:项目的根目录

    项目的根目录

  • 一个类可以实现多个接口,但是只能继承一个父类。

  • 枚举类型是一种特殊的类,枚举类型的值是对象。所有的枚举值实际上是对象的引用(地址)。在枚举类型的类定义中可以增加属性和方法。

  • 可以将对象A提供的一个复杂的方法分解为由多个简单的方法来实现。如下图:除法被分解为:乘以这个数的倒数。接着去实现:乘法以及求倒数这两个简单的方法就行。



  • 方法的参数传递:分为两种情况:①形参是基本类型;②形参是类类型。根据上一篇说的基本类型直接存,类类型存引用可知。对于基本类型来说,形参只是一个副本,在方法中对这个基本类型的形参做的操作并不会改变实参中的值。但是类类型就不一样了,类类型里放的是地址(引用),所以传递给形参的就是地址,这样在方法中对形参做的一切操作都会改变实参的值,因为传给形参的是地址呀!下图的例子很生动:

  • 书上的官方解释

  • 方法重载:方法名称相同,只是形参参数不同:参数个数不同或者形参的类型不同。顺序也行,只要这两个方法的签名不完全一样就行。(返回值不属于签名的一部分!)

  • 基本定义 签名:

  • 测试:找BUG,即:发现问题。也就是“举反例”。

  • 缺陷测试:



  • 黑盒测试:就是黑盒子模型,只看输入输出,类似STEP OVER的概念。白盒就是对模型的每个细节都去测试:类似STEP INTO的概念。

  • 对于黑盒测试中的输入:称为等价类。

  • 可变参数:同一类型的参数的个数不确定,而且这种可变参数必须放在方法形参列表中的最后一项。如:public void g(double a,int ... x); 后面的 int ... x 就是可变参数。

  • 如果使用了包名,则:保存目录下面必须有 omjiafei 的结构,用JAVA命令运行这个程序,要到tom的上一层。回想一下:Linux中的目录,所以上一篇里说的直接 /bin 就是这里的上一层目录。运行时,要写主类的全名(即:包括包名)如:中国.安徽.合肥

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

求最大公约数的函数有问题,我修改为:

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

完成了

  • 问题1:编写PP74时,实现接口有问题。
  • 解决方法:加上<实现接口的类名>就解决了,如上图。
  • 问题2:编译时出了问题,用 javac *.java 来编译。而且是在父文件夹。
  • 问题3:公共类名与文件名不匹配
  • 解决方法:仔细检查文件名!大小写!!!O 和 o 还有 P 和 p

看错误信息时,应该直接看“错误”两个字前面的程序名字,那个程序才是有错误的程序。

本周代码托管截图

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

收获良多!温故而知新。知道了toString()的方法。知道了很多其他术语。还有Linux中O和o的大小写,P和p的大小写的区别,还有I 和 i的区别。。。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 68/68 5/5 20/20
第二周 354/422 1/6 18/38

参考资料

  • Java程序设计 第八版
  • Java2实用教程
原文地址:https://www.cnblogs.com/alan6y/p/10140338.html