201521123038 《Java程序设计》 第六周学习总结
201521123038 《Java程序设计》 第六周学习总结
1. 本周学习总结

2. 书面作业
1.clone方法
1.1 Object对象中的 clone 方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
如果要在子类中覆盖clone方法,则该方法要被public修饰。
如果要拷贝的类型是基本数据类型,可以直接进行简单的拷贝。但是如果是引用类型,如String类型,那么有两种拷贝方式,深拷贝和浅拷贝。
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
被protected修饰的方法对本包可见,对该方法所在类的子类也是是可见的,但是不可以被外部包访问。在Shape中定义的抽象类Shape中定义的抽象方法getPerimeter和getArea都可以用protected来修饰,对子类Rectangle和Circle是可见的。
1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?

提示错误:Unhandled exception type CloneNotSupportedException。因为在调用clone的类中没有实现Cloneable接口。这边提示了两种修改方法。顺便测试一下深浅拷贝。
第一种:

第二种:

但是显示都是浅拷贝,因为在重写clone的时候没有对String类的name进行处理。
2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
仅需粘贴关键代码与运行结果,图片不要太大。
用匿名类与Lambda表达式重写排序方法:
可以直接在类中重写方法:
public static Comparator<PersonSortable2> NameComparator=(o1,o2)->
{
return o1.getName().compareTo(o2.getName());
};
public static Comparator<PersonSortable2> AgeComparator=(o1,o2)->
{
return o1.getAge()-o2.getAge();
};
也可以在main中调用排序的时候写方法:
Arrays.sort(list,(o1,o2)->o1.getName().compareTo(o2.getName()));
Arrays.sort(list,(o1,o2)->o1.getAge()-o2.getAge());
运行结果:

3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
Comparator<Shape> shapeComparator = new Comparator<Shape>(){
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};
用匿名内部类的方法编写,让shapeComparator实现Comparator接口,可以直接通过Arrays.sort进行排序。
4.GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
在java中的事件处理模型,包括三部分:事件源—事件对象—事件监听器
4.2 使用代码与注释,证明你理解了事件处理模型。
拿老师的参考视频做个例子:
private void calActionPerformed(java.awt.event.ActionEvent evt) {
String a=aTextField.getText();//输入字符串a
String b=bTextField.getText();//输入字符串b
result.setText(a+b);//合并字符串
}
这是一个鼠标点击JButton触发的事件。在输入框中输入字符串a和b,通过点击按钮执行代码,目的在于将输入的字符串a和b合并,并在标签result里输出。
5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)
继续完善上周的项目作业。考核点如下:
5.1 尝试使用图形界面改写。

用图形界面做了购物界面和购物车界面,但是两个界面之间的跳转目前还没有实现,购物车界面的输出上还有问题。
5.2 给出两人在码云上同一项目的提交记录截图。

5.3 与上周相比,项目的主要改动是什么?
- 首先是对上周的代码进行调整,完善了一下购物车类的设定
- 其次是用图形界面改写程序,原来的程序不一定适用于图形界面,要根据界面设计进行调整,图形界面的一些功能实现和预想中的相比还是有难度的。
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录

3.2. PTA实验
1.编写栈用
ArrayList比用数组更容易,因为栈有先进后出的特点,而ArrayList中的添加删除等都有直接的代码可以应用于头尾位置,用数组编写需要定义栈顶指针,并且在操作中要处理指针的移动情况。在编写的过程中也要考虑入栈出栈为null的情况。2.使用匿名类与Lambda表达式简化代码,可以直接写在排序语句内。例:
Arrays.sort(list,(o1,o2)->o1.getAge()-o2.getAge());3.参考链接:谨慎地覆盖clone
201521123038 《Java程序设计》 第六周学习总结的更多相关文章
- 201521123038 《Java程序设计》 第二周学习总结
201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...
- 201521123038 《Java程序设计》 第一周学习总结
201521123038 <Java程序设计> 第一周学习总结 1.本章学习总结 本周已掌握Java配置,初步认识Java运行软件和基本语法. Java语言语法和C语言基本类似,部分不同. ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
随机推荐
- jQueryGantt与DHTMLX-Gantt的对比
对比内容|jQueryGantt|DHTMLX-Gantt 本地化(语言)|封装了语言包,(仅英语)要想改变要重新编写|支持多种语言包,并且形成了完整的css文件 皮肤|只有一套现成的皮肤,逍遥该表喲 ...
- CSS基础学习笔记
一. CSS介绍 1. CSS概述:CSS(Cascading Style Sheets)指层叠样式表,极大提高了工作效率. 2. 基础语法: 属性大于1个之后,属性之间用分号隔开 如果大于1个单词, ...
- 关于virtualenvwrapper的python, pip 的版本的问题
关于virtualenvwrapper的python, pip 的版本的问题: 在创建虚拟环境时, 我们可以用 mkvirtualenv THE_NAME_OF_VENV --python=pytho ...
- js获取节点和编辑的方法
创建新节点 1.创建一个DOM片段createDocumentFragment() 例如: var d=document.createDocumentFragment(); d.appendChild ...
- javascript-new关键字
先上一段代码: function Person(name,age,job) { this.name=name; this.age=age; this.job=job; this.sayName=fun ...
- 最短路 - floyd算法
floyd算法是多源最短路算法 也就是说,floyd可以一次跑出所以点两两之间的最短路 floyd类似动态规划 如下图: 用橙色表示边权,蓝色表示最短路 求最短路的流程是这样的: 先把点1到其他点的最 ...
- WebApp开发总结
WebApp开发总结 框架的使用网络上都有教程,就不写了,主要记录下个人的开发总结以方便以后开发注意. css公用样式统一定义 css样式抽出复用 appearance: none; 取消系统默认样式 ...
- Java中"==" 和 equals 的区别
"=="比较的是地址值 equals 比较的是内容 看例子能够更加清晰的理解 eg: String s1="java",s2="java"; ...
- anaconda安装加速镜像问题解决
Anaconda使用conda连接网络出现错误 我使用的是windows10 64bit下的Anaconda2,在安装和更新包的时候出现以下报错信息. 这是使用默认源安装包的报错信息: C:Users ...
- python基础教程(五)
字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...