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

    1. 本周学习总结

    2. 书面作业

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

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

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

    https://gitee.com/1019870344/Java201621123059

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

    面向过程需要自己写一个个函数去定义,然后来实现整体的实现;而面向对象编程是放在类中实现对象的计算。

    2. 构造函数与初始化块

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

    构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的。

    资料来自百度

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

    有,编译器会自动生成无参数的构造函数;没有。

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

    public String(char value[]) { this.value = Arrays.copyOf(value, value.length); }
    把字符串通过函数复制进value数组;

    public String() { this.value = "".value; }
    这个函数是吧空字符串使value数组引用;

    public String() {this.value = new char[0];}
    这个函数使创建一个新的字符串数组;

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

    两者都是对对象进行初始化,构造函数使对相应的一个对象初始化,而初始化块使对任意对象初始化,且初始化块先执行。
    静态块在第一个对象创建时运行。
    初始化块在每个对象创建时运行,区别是静态块只执行一次,操作的内存在静态区,初始化块每个对象构造时都需要执行一次,操作的内存在用户区。

    参考百度

    3.代码分析:Math类

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

    因为这个类是静态的,而且math类中的变量也是静态的。

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

    出现以下错误:


    原因:Math的构造函数是private修饰的,所以不可见,
    无法调用,所以不能调用。

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

    非静态的对象才能使用new,被static修饰时不用创建相应的对象就可以使用。

    4. 重载Overload

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

    构造函数是一种特殊的方法,主要是为了给初始化对象赋初值,重载函数就是函数名相同,多个参数个数或类型有差异的函数;重载就是调用函数,然后进行运算。构造函数是给初始化对象直接赋值。
    它们的最终目的却完全不一样,重载是进行运算,构造函数是给对象赋值。

    参考百度

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

    5. 代码阅读: final

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

    fina修饰的变量不能变,但是在这里final不改变数组的地址,但数组的对象是可以改变的。

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

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

    7. 封装

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

    封装就是使用修饰变量,将对象的属性行为进行操作;
    降低耦合率 可重复调用类中的属性 提高安全性,也可以提高代码的俺去和可读性,便于操作。

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

    private public default protected

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

    对象:胡宇浩,讨论的是第三题,主要是ToString的用法,其中出现了很多问题,也查了很多资料,解决了很多困难,整体感觉是可以的。

    3. 码云及PTA

    3.1. 码云代码提交记录


    3.2 截图PTA题集完成情况图



    3.3 统计本周完成的代码量

    周次 总代码量 新增代码量 总文件数 新增文件数
    1 86 86 8 8
    2 342 342 10 10
    3 762 762 16 16
  • 相关阅读:
    J
    I
    uva122 二叉树的实现和层次遍历(bfs)
    A
    HDU 波峰
    2239: 童年的圣诞树
    1734: 堆(DFS)
    1731: 矩阵(前缀和)
    1733: 旋转图像(模拟)
    1728: 社交网络(概率问题 组合数/排列数)
  • 原文地址:https://www.cnblogs.com/biechusheng/p/7616973.html
Copyright © 2011-2022 走看看