201621123034 《Java程序设计》第3周学习总结
1. 本周学习总结
初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识点组织起来。请使用工具画出本周学习到的知识点及知识点之间的联系。步骤如下:
1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装
等
答:类、对象、静态属性、构建函数、封装、继承、多态、静态、非静态、重载、装饰符
1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。
参考资料:
XMind
如何使用XMind
Onenote
Onenote教程
2. 书面作业
1.以面向对象方式改造数据结构作业'有理数'(重点)
注意:属性必须修饰为为private
1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。
答:
1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?
答:面向对象的话,只需要编辑一个类,把它的方法都放在里面,要用的时候直接引用就可以。而面向过程的话,它的每个行为都得一个个去定义,并以变量、过程方法的方式去描述。
参考文件:
有理数C语言例程下载
2. 构造函数与初始化块
2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
答:
构造函数主要用于在类的对象创建时对它进行定义初始化。特征:它没有返回值,也不能对它用void来进行修饰,构造函数的命名必须和类名完全相同,它也不能直接被调用,必须在创建对象时通过new运算符才能够自动调用。
2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
答:有,当我们定义了一个类定义的时候,通常情况下系统都会默认一个构造函数,而此默认构造函数不带参数的。
没有,当我们在类中自定义了含参的构造函数时,系统不会默认构造函数,需要手动书写出来。
2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。
答:
第一个构造函数是对对象进行定义初始化
第二个构造函数是针对一个数组,根据给出的要转换的第一个字符开始根据指定长度不断将里面的数一个个进行转换
第三个构造函数是将数组里面的字符全部进行转换
2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
答:
初始化块能够初始静态成员变量,也可以执行初始化代码,优先级最高,并且仅在类第一次被加载的时候执行;而构造函数优先级低于初始化块,每次生成对象就执行一次。
静态初始化块先执行。
初始化块每次生成对象时都执行一次,可以针对多个重载构造函数进行代码复用,而静态初始化块只在类第一次被加载时执行;静态初始化块的优先级高于初始化块
静态初始化块先执行。
3.代码分析:Math类
3.1 使用java.lang.Math
类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
答:java.lang.Math
是静态类,所以不需要在新建Math对象。
3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。
答:
会出现以下错误:
源代码:
原因:该函数是私有的,不可见,不能从外部调用,所以不能 new Math()
3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)
答:当定义一个类的时候,如果该类前面有加static
这类关键词就可以直接用类的名字直接引用属性或者方法,不必进行创建相应对象就可以使用;而对于没有这个关键词的,就需要先对类实例化,也就是对这个对象new出来,然后才能使用
4. 重载Overload
4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?
答:
void test() {
System.out.println("No parameters");
}
void test(double a) {
System.out.println("Inside test(double) a: " + a);
}
对于如上的代码来说,同一个 test 方法被调用两次,参数的个数或类型不同,但他们的作用一般是相同的 ,即为重载。
public Student(){
private String name;
private String age;
public Student(){
}
public Student(String name){
this.name = name;
}
public Student(String name,String age){
this.name = name;
this.age = age;
}
}
对于如上的代码来说,,第一个是无参的,第二个有一个参数,第三个有两个参数,但这些构造函数都必须有它自己唯一的参数列表,即为构造函数的重载
区分:多个构造函数是否有唯一的参数列表,若有的话,为构造函数重载,无则为重载。
4.2 在java.lang.Math
类中举出1个方法重载的例子?
答:
方法名相同,参数不同,如图:
5. 代码阅读: final
final修饰的变量不能改变,为什么如下代码却可正常运行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
答:对于一个final变量,如果它是基本数据类型的变量,那么它的其数值一旦初始化,那么就不能再更改;如但果这个 final 是引用类型的变量,那么在对它进行初始化之后就不能再让其指向另一个对象,但是可以修改对象的内容。
6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()
功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
截图:关键代码。
提示:使用LocalDateTime, DayOfWeek类
答:
参考资料:
JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf
Java8DateTimeTest.java
7. 封装
7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装
是什么意思?有何好处?
答:
封装可以把一系列具有相同特征的属性放在一个对象里,并且把该对象的属性给私有化,然后提供一些可以被外界访问该对象的属性的方法。
好处:1.安全:将对象属性私有化之后只能通过getter和setter方法对外提供得到和设置的方法。2.方便:这些功能写好后,以后每次要用可以直接调用。
7.2 和封装有关的关键字有哪些?
答:继承 多态 修饰符
8. 结对编程实践(未完成,0分)
找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。
写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.感想。4.照片(上次很多同学并未贴照片,请贴上)
答:
1.对方姓名:姚雯婷。2.所完成的题目:7-3 3.感想:在编写过程中,我们先是各自编写,之后有不懂的地方再互相讨论,而在强制转换那里遇到了问题,不过鉴于本题不算很难,还是在一起讨论加百度后完成了这道题目,还是挺有帮助的。
9. 选做:Runnable Jar
我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打成一个可运行的jar包,在命令行直接运行。改造题目6,使其从命令行接收参数,参数为年-月-日
,如1999-09-09
。最后将项目打成可运行的jar包,然后在命令行通过java -jar
运行,并截图。参考文件如下:
Eclipse生成Runnable jar
3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
(由于我自己之前没搞懂这软件的原因,表格内容有点奇怪,不要在意。。)
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
2 | 141 | 141 | 6 | 6 |
3 | 445 | 380 | 10 | 3 |
参考文件:
第3周作业参考文件
201621123034 《Java程序设计》第3周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- ABAP Netweaver和git的快捷方式
Netweaver Jerry的SAPGUI收藏夹管理工具:链接 git 我笔记本上有很多github仓库,每次切换仓库,我不想敲很长的cd命令.比如现在我需要手敲下面的命令进入一个Java仓库: c ...
- 使用HANA Web-based Development Workbench创建最简单的Server Side JavaScript
服务器端的JavaScript, 看下wikipedia的介绍: https://en.wikipedia.org/wiki/JavaScript#Server-side_JavaScript Ser ...
- 【翻译】22款HTML & CSS3 UI工具包免费下载
下面盘点了22款适用于网页设计的HTML&CSS3 UI工具包,并且全部都是免费的哦!喜欢就赶紧 下载或收藏吧.这些免费工具可以加速你的网页开发进程,让你有更多时间专注于其他更重要的部分.由于 ...
- IOS给图片增加水印(图片、文字)
在网上发现很多人使用 CGContextDrawImage(context,CGRectMake(0,0,self.width,self.height),[image CGImage]); //原图 ...
- IOS UISwitch控件的基本使用
* UISwitch继承自UIControl,因此也能像UIButton一样监听一些事件,比如状态改变事件* UISwitch可以通过拖线监听状态改变* UISwitch可以通过addTarget:. ...
- NFS服务器实现文件共享
NFS服务器运行原理 实战配置NFS服务器 配置Samba服务器及实现文件共享 (一)NFS器服务端描述 NFS服务器: Network File System,网络文件系统使FreeBSD支持的一种 ...
- CYUSB
/*Summary The application cydesc is used to open the device with cypress GUID and get the device des ...
- 使用vue-cli创建项目
使用Vue UI创建.管理项目 1.全局安装vue-cli 3.0 npm install -g @vue/cli 2.启动vue ui 创建项目: vue ui
- php 递归
function digui($data,$j=0,$lev=0){ $subs=array();//存放子孙数组 foreach ($data as $v){ if ($v['parent_id'] ...
- python实现批量修改文件名
import os def dele(): # 设置一个计数器 n=0 st = input('请输入你要删除的字符:') for i in f: b = f[n] if st in b: oldna ...