zoukankan      html  css  js  c++  java
  • 201621123057 《Java程序设计》第3周学习总结

    1. 本周学习总结

    初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识点组织起来。请使用工具画出本周学习到的知识点及知识点之间的联系。步骤如下:
    1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装等
    类管理机制:包机制, import package 完全限定类名 -d. -cp 类 、对象、封装 public private 构造函数 this
    1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。

    2. 书面作业

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

    注意:属性必须修饰为为private
    1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。

    git地址

    1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?
    答:
    面向过程编程就像一个流水线,是一个流程化的过程;而面向对象编程感觉最大的就是有很多现成的方法可以直接来调用,而且很抽象化。

    2. 构造函数与初始化块

    2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
    答:
    构造函数分为无参构造和有参构造(构造时有无传进参数),它们的作用就是在创建对象的时候对对象做初始化操作。
    对于构造函数,他们没有返回值;在new出现的时候才会被调用;并且函数的命名必须与所属类名相同。

    2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
    答:
    对于一个没有写构造函数的类,运行时会自动生成一个无参构造函数;如果类中只有有参构造函数,则不会自动生成无参构造函数。

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


    有两个String对象,新的对象与原来的对象指向同一个地方。


    字符数组中的字符复制生成字符串。


    对于这个构造函数,通过网上了解到

    作用是通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。

    2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
    答:
    初始化块与构造函数都起到初始化的作用,但是初始化块是绝对没有参数的,而构造函数可以有参数;
    初始化块先执行;
    静态初始化块只执行一次,而初始化块是随新建对象执行的,并且是静态初始化块先执行。

    3.代码分析:Math类

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

    上图是Math类中的部分方法摘要,可以看到,每个方法都是静态的(static),所以不需要用new新建Math对象的。

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

    从类源代码中可以看出Math()定义为私有private,是不能被外部调用的。

    3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)
    答:
    对于这个问题,就看是不是static静态的了。非静态的对象才需要new。调用静态的方法时不必创建相应对象就可以使用。

    4. 重载Overload

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

    重载就是方法名称相同,但参数不同;构造函数的重载就是一个类中可以有多个构造函数,但是其参数是不同的。
    区分两个重载可以按照参数的种类个数来区分。

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

    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(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?**
    答:
    封装感觉就是私有化,定义为自己的东西,不允许外人来用,也就是不允许别的类调用
    本题中,像长方形的属性widthlength和圆形的radius都被封装了起来
    好处就是具有隐私性,可以吧不需要外界知道的东西隐藏起来。
    7.2 和封装有关的关键字有哪些?
    答:
    private default protected public

    JAVA中的关键字——封装 (网上博客)

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

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

    结对同学:高天
    题目:04-形状-继承
    感想:这次合作感觉比第一次要好。看完题目之后,一起看书简单学习了继承这一概念。对于这道题,两个人的思路大致相同(自己的思路相对结伴同学的来说,模糊了些)。父类存放,子类运算。在编程调试的过程中,感觉时间花费上减少了不少。

    9. 选做:Runnable Jar

    我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打成一个可运行的jar包,在命令行直接运行。改造题目6,使其从命令行接收参数,参数为年-月-日,如1999-09-09。最后将项目打成可运行的jar包,然后在命令行通过java -jar运行,并截图。

    3. 码云及PTA

    3.1. 码云代码提交记录

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

    3.2 截图PTA题集完成情况图

    3.3 统计本周完成的代码量

    周次 总代码量 新增代码量 总文件数 新增文件数
    1 0 0 0 0
    2 0 0 0 0
    3 619 619 12 12
  • 相关阅读:
    Palindrome Linked List 解答
    Word Break II 解答
    Array vs Linked List
    Reverse Linked List II 解答
    Calculate Number Of Islands And Lakes 解答
    Sqrt(x) 解答
    Find Median from Data Stream 解答
    Majority Element II 解答
    Binary Search Tree DFS Template
    188. Best Time to Buy and Sell Stock IV
  • 原文地址:https://www.cnblogs.com/chqing/p/7593959.html
Copyright © 2011-2022 走看看