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

Posted

tags:

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

201621123021《JAVA程序设计》第三周学习总结

1. 本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装

  • 关键词:类、对象、封装、构造函数。

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

技术分享

 

2. 书面作业

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

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

技术分享

 

201621123021git

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

  • 区别是面向对象编程是对类进行封装成新的类以实现对象的直接调用,面向过程是通过类运用结构化的方法实现目标的实现。

2. 构造函数与初始化块

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

  • 作用是能够创建对象并使其初始化。

  • 特征是构造函数的名称与类名相同,其函数没有返回值,不可直接调用,需要使用new来调用。

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

  • 对原字符串进行修改。

 
public String(StringBuffer buffer) {
    synchronized(buffer) {
        this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
    }

}
  • 对原字符串进行修改,相较于StringBuilder速度更快。

 
public String(StringBuffer buffer) {
    synchronized(buffer) {
        this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
    }

}
  • 创建一个新的字符串对象

 
 
String(char[] value, boolean share) {
    // assert share : "unshared not supported";

    this.value = value;
}

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

  • 同:初始化块和构造函数都可以对函数进行初始化。

  • 异:初始化块可以对函数进行无参初始化,构造函数对函数进行有参的初始化。

  • 初始化块相对于构造函数先执行。

  • 静态初始化块相对初始化块值运行一次,且比初始化块先执行。

3.代码分析:Math类

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

  • 因为Math类大部分的方法都是静态的,可以对其进行直接调用。

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

  • math是一个私有的private使其用new Math()会产生错误。

 
 




public final class Math {
?
    /**
     * Don‘t let anyone instantiate this class.
     */
    private Math() {}
?

    /**
3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?
  • 需要将对象进行实例化的对象可使用new,调用静态类的方法不需要使用到new。

4. 重载Overload

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

  • 重载就是在程序中可以由相同名字的方法,但方法中参数不同。

  • 构造函数具有相同的名字,但其参数内容不同。

  • 重载可以根据后面的数据不同进行区分。

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

  • abs()即绝对值函数的重载

     
     

    
    
    
    public static int abs(int a) {
        return (a < 0) ? -a : a;
    
    }
    
    
    
    
    
    
    public static long abs(long a) {
        return (a < 0) ? -a : a;
    
    }

5. 代码阅读: final

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

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

  • finnal不可改变的是对象,但是对象中的内容却是可以改变的。

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

技术分享

 

7. 封装

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

  • 封装就是将一些方法组成新的类,便于程序的直接调用。

  • 好处:可以使对象便于使用,并且可以提高数据的安全性能。

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

  • 关键字:private、defaulit、protected、public

8. 结对编程实践

体验报告

  • 对方姓名:董明超

  • 所完成题目PTA7-5 jmu-Java-03面向对象基础-05-覆盖

  • 感想:通过这次结对编程使我明白了自己和别人的思路存在不同,通过结对编程使我能够用不同的角度来思考一个程序要如何编写,与别人一起编程虽然有点儿尴尬但是有所收益。

    技术分享

     

     

     

3. 码云及PTA

3.1. 码云代码提交记录

技术分享

 

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

技术分享

技术分享

 

3.3 统计本周完成的代码量

周次总代码量新增代码量总文件数新增文件数
1 156 156 8 8
2 324 234 46 46
3 467 467 51 51

|



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

201621123021 《Java程序设计》第2周学习总结

201621123021《JAVA程序设计》第五周学习总结

201621123021《JAVA程序设计》第六周学习总结

201621123021《JAVA程序设计》第八周学习总结

201621123021《JAVA程序设计》第九周学习总结

201621123021《JAVA程序设计》第十一周学习总结