1.本周学习总结
2.书面作业
2.1 以面向对象方式改造数据结构作业'有理数'(重点)
2.2 构造函数与初始化块
2.2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
构造函数是针对对象来说的,有了构造函数更容易分配内存,有时候当你需要传递参数但函数中时可以更加方便。修饰符+类型+函数名+形参;
2.2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
当一个类中没有写构造函数时,系统会默认有一个无参函数。但当类中存在有参函数时就不需要无参构造函数了。
2.2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。
2.2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
初始化块:对象的初始化。只要建立对象该部分就会被执行,且优先于构造函数。
构造函数:对应对象的初始化,在创建对象时,选择与之对应的初始化对象。
静态初始化块:对类的初始化,加载时所属的类会被加载并执行,但是只有一次。
三者执行顺序:静态初始化块>初始化块>构造函数 >来自360问答
2.3 代码分析:Math类
2.3.1 使用java.lang.Math
类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
因为`java.lang.Math`是静态函数,是系统中已经存在的无需重新new一个新的函数,如果要调用Math类直接在代码前加入`java.lang.Math`,然后用math.函数名即可。
2.3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。
如果程序中出现new Math()程序运行后会提示:The constructor Math() is not visible;
从这段代码中可以看出Math类前面的修饰符为private(私有),已经存在的构造函数无需重新构造。
2.3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)
这种情况下就是要看构造函数时的修饰符是什么,如果是静态类(static类)的话,就不需要去new一个新的对象;如果不是那就可以去new一个新的对象。
2.4 重载Overload
2.4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?
重载即函数名相同,变量以及变量类型相同;构造函数重载即在同一个类中可以同时构造多个函数,任意一个函数都有自己的变量;
如何区分两个重载方法:根据重载中参数的类型即可区分两种重载。
2.4.2 在java.lang.Math类中举出1个方法重载的例子?
如下图所示:
2.5 代码阅读: final
2.5.1 final修饰的变量不能改变,为什么如下代码却可正常运行?
`final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;`
final修饰的变量之后不能再指向其他对象,但是其内部的值是可以改变的。
2.6 Java8中的时间日期类:编写函数public static boolean isMondayToFriday()
2.7 封装
2.7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?
封装是指将实现细节同接口分离开,尽量实现对外部隐藏;
封装优点:可以提高程序的稳定性,降低被破坏的机率,减少程序之间的依赖性,可以忽略具体的实现细节。>以上问答来自360问答
2.7.2 和封装有关的关键字有哪些?
与封装有关的关键字: public 、protected、private、set()、get() 。
2.8 结对编程实践(未完成,0分)
结对对象:林裕恒
感受体会:一般题目都是自己一个人在宿舍敲的,平时偶尔碰到问题也就一个人在那里一直想,可是老师的这个结对编程的方法还是解决了我的一些问题,
毕竟两个人有两个大脑在思考, 样碰到问题还是能够比较快的讨论出来,比一个人好多了。感觉有些知识相互间还能互补,互相学习。
3.码云及PTA
3.1 码云代码提交记录
-在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 556 | 556 | 8 | 8 |