1. 本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装等

关键词:类 对象 封装 构造函数 this,static,final

1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来

2. 书面作业

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

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

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



git地址

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

以往的代码是面向过程编程,需要一步步的去调用“方法”,数据和对数据的操作是分离的,而面向对象的过程,数据和对数据的操作是绑在一起的,采用封装只对外提供调用“方法”的接口

2. 构造函数与初始化块

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

构造函数用来初始化类,创建对象

特征:构造方法的名称要和类名相同;构造函数没有返回值

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

如果一个类不写构造函数,它会有一个默认构造函数;如果一个类中只有带参函数,系统将不会自动生成一个默认构造函数,但是可以添加

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





第一个:创建一个空的字符串

第二个:创建一个字符串

第三个:创建一个字符串,但是先传入数组再创建

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

初始化块是给给所有对象进行统一初始化,构造函数只给对应对象初始化;

初始化块对对象进行初始化,对象一建立就会运行,所以初始化块比构造函数块先执行;

静态初始化块给类进行初始化,随着类的加载而执行,不管创建多少个对象有且只执行一次,静态初始化块比初始化块先执行。

以下代码可说明执行顺序:

public class people
{
public static int num=0;
String name;
static
{
System.out.println("静态初始化块"+num);
}
{
System.out.println("初始化块"+num);
}
public people(String name)
{
System.out.println("构造函数块"+num);
this.name=name;
num++;
}
public static void main(String[] args) {
people a=new people("xiao");
people b=new people("chen");
}
}

3.代码分析:Math类

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

java.lang.Math类中的方法以及成员变量都是静态的,所以他并不需要new新建对象,只需要使用"类.方法"进行直接访问

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



对象调用的方法都是static,所以并不需要new一个对象

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

非静态类需要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(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?

封装就是把“方法”装起来,不对外公开是内部实现的细节,这样即使修改了“方法",外部访问“方法”的原则也不会改变,而且被封装后的对象可以被外部多个对象访问,就不需要去指定不同外部对象的不同的服务对象

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

this

private

public

8. 结对编程实践

对方姓名:安晏菊

所完成的题目:pta 7-2

感想:7-2是在7-1的基础上加以改动,在课上已经学会打7-1后,7-2大概代码都能完成,就是在static的处理上出现了问题,没有理解static的使用效果

9. 选做:Runnable Jar

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

3. 码云及PTA

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图

3.3 统计本周完成的代码量





有bug???

最新文章

  1. Nginx 安装以及反向代理配置(windows)
  2. FileReader获取文件的base64编码
  3. 初学JAVA的 感想 尹鑫磊
  4. [java基础]java中static关键字
  5. ZK 使用Clients.response
  6. 主题:Android、iPhone和Java三个平台一致的加密工具
  7. 技术英文单词贴--V
  8. Apache Storm 的历史及经验教训——Nathan Marz【翻译】
  9. 在Unity中为模型使用表情
  10. JS中innerHTML 和innerText和value的区别
  11. 安装 SQLManagementStudio_x86_CHS(SQL Server Management Studio) 老提示重启的解决办法
  12. linux/unix网络编程之 select
  13. Naive and Silly Muggles (计算几何)
  14. css3 渐变linear-gradient
  15. wecenter—开启CURL扩展,让服务器支持PHP curl函数(远程采集)
  16. Java数据结构系列——简单排序:泡、选择、直接进入
  17. easyUI datagrid 动态绑定列名称
  18. linux下两台服务器文件实时同步方案设计和实现
  19. EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用
  20. ASP.NET代码调用SQL Server带DateTime类型参数的存储过程抛出异常问题

热门文章

  1. STM32定时器时间的计算方法
  2. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)
  3. Java中运行时异常和非运行时异常什么鬼?
  4. c# 泛型和IComparable<T>接口
  5. eclipse中配置MAVEN并使用阿里云代理
  6. leetCode21: 合并两个有序列表
  7. Redis之父九条编程忠告
  8. tensorflow-yolo3系列配置文章汇总
  9. python练习题_01
  10. 安装zabbix3.4 centos7