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

1.本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词

类 对象 封装性 this private 构造函数 package importjava

1.2 用思惟导图或者Onenote或其余工具将这些关键词组织起来。

2. 书面做业

1.以面向对象方式改造数据结构做业'有理数'(重点)

注意:属性必须修饰为为privategit

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



https://gitee.com/hellolv/java201621123078编程

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

面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,而后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操做是分离的。数组

面向对象编程是将事物对象化,经过对象通讯来解决问题。面向对象编程,数据和对数据的操做是绑定在一块儿的。数据结构

2. 构造函数与初始化块

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

做用:函数

  • 在构造函数过程当中可以初始化对象的值
  • 能建立对象,给其空间。

构造函数能够是有参数的也能够是无参数,可是在构造函数的过程当中名称和类的名必需要一致,苟泽构造函数没有返回类型。工具

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

  • 若是类不写构造函数,系统会默认给一个无参构造函数。
  • 若是定义了一个有参的构造函数,为了保证正确性,系统不会建立无参构造函数。学习

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


    图一:该String构造函数中,参数为char数组,使用java.utils包中的Arrays类复制数组

    图二:该String构造函数是令value字符数组引用空字符串。

    图三:该String构造函数直接令value字符数组引用original的value字符数组地址,并把其hash值拷贝过来。this

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

3.代码分析:Math类

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

对于java.lang.Math类都为静态变量与方法,并不须要new出一个Math对象,再调用该对象上相应的方法。code

3.2 若是new Math()会产生什么错误?尝试阅读Math类源代码,分析缘由。

会出现“The constructor Math() is not visible”的错误提示,由于java.lang.Math类的函数在使用时不须要重载。

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

在引用数据类型在定义实例时须要new实例对象,经过new能够调用含参的和不带参的函数,而对于基本数据类型不须要new能够直接定义,静态方法属于类自己,而非类的实例,因此能够用“类名.方法名”直接调用没必要建立相应对象就可使用。

4. 重载Overload

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

  • 同一个类中的2个或2个以上的方法能够一同一个名字,只是它们的参数声明不一样便可,在这种状况下,该方法就被称为重载,这个过程称为方法重载。

    参考百度知道

  • 举个例子
public  Student(){
   private String name;
   private String age;
public Student(){
}
public Student(String name){
 this.name = name;
}
public Student(String name,String age){
this.name = name;
this.age = age;
}

//上面三个函数都是Student类的构造函数。第一个是无参的,第二个有一个参数,第三个有两个参数。这就是构造函数的重载

  • 区别方法:看方法或函数的参数是否相同。

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

经过查看jdk文档中有关于Math类的abs能够看出在Math()函数中abs的方法有不少并且不尽相同,参数不一样,调用的方法也不一样,因此组中输出的结果也是不一样的。

5. 代码阅读: final

final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;

由于final修饰的时引用类型的变量,变量的值在运行过程当中不能不被修改,因此代码依然能够正常运行,此外,NUMBS存储的时数组的首地址。

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

功能:判断今天若是是周一到周五,返回true,返回false。main函数中调用该函数,若是为true则输出“工做日+姓名学号”,不然输出"休息+姓名学号"。
截图:关键代码。
提示:使用LocalDateTime, DayOfWeek类

7. 封装

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

顾名思义,封:封闭,装:装起来,将具体的实现细节装到一个容器中,并封闭起来,防止容器外部直接访问容器内部的实现细节,仅公开暴露指定的访问路径。正如长方形类Rectangle,其中width, length这些属性是私有的,圆形类Circle,属性radius是私有的。

好处:

  1. 隔离性,对象内部修改后,在公开暴露指定的访问路径不变的状况下,外部访问它的对象是无需修改的。
  2. 可复用性:
    被封装后的对象能够被外部多个对象访问,而无需为每一个外部对象去指定不一样的服务对象。
  3. 可读性:
    被封装后的对象的名称(如:程序集名,类名,方法名)若是命名恰当,那么就能在不看里面的实现细节的前提下,了解该对象的做用。

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

  • private 只容许内部进行访问,外部没法访问。
  • public 对全部部分均可见,公共全部
  • default 默认的、无符号
  • protected 保卫的

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

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

个人搭档是苏志颖同窗,咱们所完成的是PTA的上面的第四题,在编写代码的过程当中让我感觉到两我的一块儿编写效率可以获得很大的提升,在我编写过程当中,可以及时发现个人问题,并可以一块儿讨论,一块儿解决问题。

3. 码云及PTA

3.1. 码云代码提交记录

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

3.2 截图PTA题集完成状况图

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

3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 280 280 5 5
3 530 250 9 4
相关文章
相关标签/搜索