java第三周作业

1. 本周学习总结

2. 书面作业

1.以面向对象方式改造数据结构作业'有理数'(重点)注意:属性必须修饰为为private。

1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。



https://gitee.com/yellower/201621123045HuangZiYingYouLiShu.git

1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?

答:构造有理数的分子分母的时候java可以直接利用现有的函数进行构造,c语言必须得自己写函数自己建结构体。面向对象编程很多时候都有现成的函数可以使用,不用大费周章一切从0开始。

2. 构造函数与初始化块

2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?

答:构造函数是用来创建一个对象的。
函数格式分为两种:

  • 有参构造函数格式:public 创造的对象名 ()
  • 无参构造函数格式:public 创造的对象名 (具体需要设置的里面的变量)

2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?

答:

  • 有。系统会为其创建一个无参构造函数。
  • 没有。当存在有参构造函数,无参的需要自己写。

2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。

  • public int length(){return value.length}返回字符串的长度
  • public String(char value[]) {this.value = Arrays.copyOf(value, value.length);}字符串的复制
  • public String() {this.value = new char[0];}创建一个字符串数组

2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?

顺序:静态初始化块、实例初始化块、构造函数

静态变量和静态初始化块都是在类加载到系统时,加载到系统中,静态初始化块只运行一次,实例初始化块和构造函数都是运行两次,也就是说,有一个对象就执行一次实例初始化块和构造函数。

3.代码分析:Math类

3.1 使用java.lang.Math类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?

答:因为Math类的所有执行方法都是静态方法,不过调用的时候还是有产生Math对象的。

3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。


答:Math源代码中显示Math是private,所以外部调用时会出错。

3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)

答:原则上面向对象都需要用new,但是静态的一些方法不需要new,比如Math之类的。

4. 重载Overload

4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?

  • 重载:一个类中有好几种方法,方法名都一样,但是参数不一样,返回的值也可以一样,是类的多态性的一种表现。
  • 构造函数重载:构造函数有一样的名字,但是参数的个数或者是类型是不一样的。
  • 区分:参数数量、参数类型。

4.2 在java.lang.Math类中举出1个方法重载的例子?

答:重载abs方法,返回一个数(int、long、float、double)

5. 代码阅读: final

final修饰的变量不能改变,为什么如下代码却可正常运行?

final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
答:对于一个final变量,基本类型的变量是无法更改的;但是如果是引用型的变量,不能让其指向另一个对象,但是对象本身是可以改变的。

6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()

功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。

截图:关键代码。

提示:使用LocalDateTime, DayOfWeek类

7. 封装

7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?

答:封:封闭,装:装成一个整体。
作用:

  • 外部对象是无法直接访问对象的内部实现细节
  • 被封装的对象可以被外部多个对象访问

7.2 和封装有关的关键字有哪些?

  • private:封装的隔离性的体现,将内部设为私有,外部就无法直接访问内部的实现细节;
  • public:与private相反,public把内部细节公开出去;

8. 结对编程实践(未完成,0分)

找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。

写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.感想。4.照片(上次很多同学并未贴照片,请贴上)

姓名:翁华辉
完成:7-3
感想:首先,我们两个相对来说都对java没有那么多经验,也是这学期才开始学习,所以抛开之前的学习状况不说,在学习java这边,水平是相近的。实验前我们先一起花十几分钟一起复习了封装相关的知识,然后分配任务,一个写长方形,一个写圆。因为这部分是同时一起写的,而且虽然写的形状不一样,但是代码大多都是类似的,所以遇到问题都一起讨论+百度解决掉,所以这部分的代码完成得蛮高效率的。main函数的部分主要是一些输入和输出的处理,没碰到什么难的问题,最后还是算蛮顺利的完成了这个题目。
照片:

3. 码云及PTA

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2 截图PTA题集完成情况图

需要有两张图(1. 排名图。2.PTA提交列表图)

3.3 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中,可使用最新版的代码统计工具的-history参数,详细用法见项目wiki地址。表格如下所示:

周次 行数 新增行数 文件数 新增文件数
1 115 115 17 17
2 421 306 24 7
3 698 277 30 6

只有单周数据,表格是手动整合的。

posted @ 2017-10-01 00:35  学java真开心  阅读(357)  评论(1编辑  收藏  举报