201621123030《Java程序设计》第3周学习总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了201621123030《Java程序设计》第3周学习总结相关的知识,希望对你有一定的参考价值。

1. 本周学习总结

1.初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识点组织起来。请使用工具画出本周学习到的知识点及知识点之间的联系。步骤如下:

1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装等
1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。
技术分享

 

2. 书面作业

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

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

技术分享

 

技术分享

 

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

把一个事件分割成多个片段然构建很多函来解决是面向过程编程;一个事件就是一个对象,然后把这个事情封装在一个对象里用多种方法解决这是面向对象编程

2. 构造函数与初始化块

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

构造函数的形式如下:

public Person()
{
System.out.println("This is constructor");
System.out.println(name+","+age+","+gender+","+id);

}
public Person(String name,int age,boolean gender)
{
this.name=name;
this.age=age;
this.gender =gender;
}

通过定义一个构造函数让我们在定义变量的时候可以对我们定义的类赋初值,如果没构造这个函数就直接用默认的构造函数对其赋初值

toString函数的形式如下:

public String toString()
{
return String.format("Person [name=%s, age=%d, gender=%s, id=%s]",name,age,gender,id );
}

定义完以后,这个函数有助于我们对变量进行输出,若没定义则会使用父类或Object类中的toString函数。

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

会有构造函数,会自动生成一个没有参数的构造函数赋值给它,如果一个类中有带参的构造函数,它不会有不带参数的默认构造函数

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

public String() 

这个String构造函数可以让value字符数组新建一个空字符串

public String(char value[])

这个String构造函数让字符串复制到char数组中

String(byte[] bytes)

这个String构造函数通过byte把字符串构造对象

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

初始化对象都是通过初始化块和构造函数实现,构造函数只初始化内部的对象,初始化块是对全部对象进行初始化,只要一新建一个对象,初始化块就开始工作,所以执行顺序是初始化块 > 构造函数

静态初始化块也是新建一个对象就执行一次而且只有一次,静态初始化块优先执行

3.代码分析:Math类

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

Math类的函数都是静态的,所以用户可以直接使用类名加方法名的方式调用Math中的方法,不需要用new创建对象

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

产生‘The constructor Math() is not visible’的错误,意思就是构造函数 Math()是不可见的

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

对象要通过new进行实例化,实例化以后才可以调用函数。调用static静态方法可以不要创建对象可以使用

4. 重载Overload

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

  • 重载即多个方法拥有相同的方法名但参数不同,可以是参数类型不同,参数个数不同,参数顺序不同。只有返回类型不同不能算是重载,下图为Math类max函数重载的例子,看其参数情况来区分。
  • 技术分享

     

4.2 在java.lang.Math类中举出1个方法重载的例子?
static double abs(double a)是重载的一个例子

5. 代码阅读: finalfinal修饰的变量不能改变,为什么如下代码却可正常运行?final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;

NUMBS这个数组对象被final修饰就是它的引用不能被修改,并不是这个引用所指向的一系列值不能被修改。还有如果NUMBS = null;就会报错

6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。

技术分享

 

 

 

7. 封装

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

  • 将对象的数据方法放在同一个类里,在要进行操的时候,通过调用对象的方法完成操作,大大提高可读性

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

  • private 私有的
  • default 默认的
  • protected 保卫的
  • public 公共的

8. 结对编程实践(未完成,0分)找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.感想。4.照片(上次很多同学并未贴照片,请贴上)

对方姓名:马玉兰
题目:PTA的7-1 jmu-Java-03面向对象基础-01-构造函数与toString
感想:在实验课上老师给出了思路的思路,然后各自都有不同的想法,,结对编程让自己知道别人的思路和自己的有很大不同,有很多地方值得借鉴

 技术分享

 

3. 码云及PTA

3.1. 码云代码提交记录

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

技术分享

 

3.2 截图PTA题集完成情况图需要有两张图(1. 排名图。2.PTA提交列表图)

 

技术分享

 

3.3 统计本周完成的代码量

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

 

周次总代码量新增代码量总文件数新增文件数
2 330 330 5 5
3 652 322 11 6





















以上是关于201621123030《Java程序设计》第3周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

201621123030《Java程序设计》第5周学习总结

201621123030《Java程序设计》第14周学习总结

201621123030《Java程序设计》第10周学习总结

201621123030《Java程序设计》第11周学习总结

201621123030《Java程序设计》第4周学习总结

201621123030《Java程序设计》第9周学习总结