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
  • 相关阅读:
    hdu 刷题记录
    HDU step by step
    Codeforces Round #260 (Div. 2) B. Fedya and Maths
    Codeforces Round #260 (Div. 2) A. Laptops
    UVALive 6662 TheLastAnt
    UVALive 6661 Equal Sum Sets
    Codeforces Round #253 (Div. 2) A. Anton and Letters
    wikioi 3130 CYD刷题(背包)
    wikioi 1014 装箱问题(背包)
    [转]很特别的一个动态规划入门教程
  • 原文地址:https://www.cnblogs.com/chqing/p/7593959.html
Copyright © 2011-2022 走看看