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


1. 本周学习总结

2. 书面作业

1.clone方法

1.1 Object对象中的 clone 方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?

如果要在子类中覆盖clone方法,则该方法要被public修饰。

如果要拷贝的类型是基本数据类型,可以直接进行简单的拷贝。但是如果是引用类型,如String类型,那么有两种拷贝方式,深拷贝和浅拷贝。

1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。

被protected修饰的方法对本包可见,对该方法所在类的子类也是是可见的,但是不可以被外部包访问。在Shape中定义的抽象类Shape中定义的抽象方法getPerimetergetArea都可以用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程序设计》 第六周学习总结的更多相关文章

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

    201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...

  2. 201521123038 《Java程序设计》 第一周学习总结

    201521123038 <Java程序设计> 第一周学习总结 1.本章学习总结 本周已掌握Java配置,初步认识Java运行软件和基本语法. Java语言语法和C语言基本类似,部分不同. ...

  3. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  4. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  7. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  8. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  9. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  10. 20145237 《Java程序设计》第九周学习总结

    20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...

随机推荐

  1. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  2. C#使用Xamarin开发可移植移动应用(3.进阶篇MVVM双向绑定和命令绑定)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...

  3. android学习Gallery和ImageSwitch的使用

    Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了, * @deprec ...

  4. MySQL多字节字符集造成主从数据不一致问题

    MySQL多字节字符集造成主从数据不一致问题 来自江羽   2013-04-27 16:03:56|  分类: 默认分类|举报|字号 订阅 转载: http://backend.blog.163.co ...

  5. MySQL索引篇

    innodb索引概念   总结记录下innodb的索引概念,以备查看   innodb索引分类: 聚簇索引(clustered index)     1)  有主键时,根据主键创建聚簇索引     2 ...

  6. Vim入门基础

    公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...

  7. nGrinder 简易使用教程

    背景 性能压测工具之前使用的是jmeter,这次说的是nGrinder,先直接搬运两者之间的比较 比较点 JMeter nGrinder 结果 实现语言 Java Java = License Apa ...

  8. STL学习之find系列函数

    这里先介绍find, find_if, find_first_of,三个函数.其余的以后再更新. 一.std::find() 用法:find(first, end, value); 返回区间[firs ...

  9. MySQL查询1

    1.将下列语句复制到sqlyog的询问栏 /*!40101 SET NAMES utf8 */; create table `t_student` ( `id` double , `stuName` ...

  10. Java虚拟机说明书

    JVM运行原理: Class的加载 过程:加载-验证-准备-解析-初始化-执行-卸载 加载:class文件(二进制字节流)被类加载器加载到内存中,将这个字节流所代表的静态存储结构转化为方法区的运行时数 ...