版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java深入编程,计算机学院 软件工程教研室 赵卓君 QQ: 290913207 手机:Email: 办公室:HA202,计算机学院 赵卓君,课程简介,本课程是Java程序设计的后续高级课程。 在上学期所学Java基础知识上,进一步深入介绍Java语言的高级特性,包括泛型和泛型接口、序列化和反序列化、GUI图形用户界编程、JDBC数据库连接、线程、Applet和网络编程等。 学完本课程后,学生可以开发出基于Swing组件的C/S架构应用系统和Java网络通讯系统,如:学生成绩管理、图书信息管理、网络聊天室等系统。也可参加Java认证的SCJP考试。,计算机学院 赵卓君
2、,课程知识点介绍,整个课程共七章: 第一章:泛型和泛型接口(重点) 第二章:序列化和反序列化 第三章:GUI图形用户界面编程(重点、难点) 第四章:JDBC数据库连接(重点、难点) 第五章:线程和多线程(重点、难点) 第六章:Applet和网络编程(难点) 第七章:C/S架构应用程序开发 (难点),计算机学院 赵卓君,教学及考核安排,本课程是考查课,共48学时(其中理论26学时,实验22学时) 考核方式(闭卷、笔试): 出勤20% 作业10% 实验20% 期末50% 总计100%,计算机学院 赵卓君,学习要求,上课认真听讲,做笔记。 课后及时消化上课的知识点。 保证出勤,不旷课、迟到、早退(包
3、括上机课)因为出勤占了20%。 按时交课外作业和实验作业。之后补交作业会酌情扣分,抄袭别人的作业(或者复制粘贴别人的作业)不算提交该次作业。,第一章 泛型和泛型接口,计算机学院 赵卓君,主要内容,回顾上学期所学的集合概念:List、Set和Map接口,Iterator接口,Comparable和Comparator接口 类型安全和泛型的概念和使用(重点) 泛型类、泛型方法、泛型接口: Comparable、Comparator (重点) 类型通配符?和有限制的通配符(难点),计算机学院 赵卓君,集合框架包含的内容,1,接口,Collection,List,Map,2,具体类,List,Arra
4、yList,LinkedList,Map,HashMap,3,算法,Java集合框架为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了 。Java集合框架位于java.util包中,Collections,提供了对集合进行排序、遍历等多种算法实现,如 sort()、reverse()、shuffle(),采用键-值对的映射存储方式,长度可动态改变,采用线性列表的存储方式,长度可动态改变,Set,不保证元素的顺序,不允许出现重复的元素,Vector,Hashtable,Set,TreeSet,HashSet,计算机学院 赵
5、卓君,集合接口,List接口 Map接口 Set接口,元素以线性方式存储 存储的顺序与添加的顺序相同,以键-值的映射来存储元素 键值不允许重复,不保证元素的顺序 不允许重复元素,计算机学院 赵卓君,List 接口,允许重复的元素 允许null值 元素在集合中的顺序与添加顺序一致 常用的实现该接口的类: ArrayList 动态数组 Vector 向量 LinkedList 链表 Stack 堆栈(LIFO),ArrayList、Vector、LinkedList区别,ArrayList 和Vector是采用数组方式存储数据,允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以
6、索引数据快插入数据慢,Vector由于使用了synchronized(线程安全)方法,但是性能上比ArrayList要差 LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快! Stack是按照堆栈的原理来存储数据,先进后出,计算机学院 赵卓君,计算机学院 赵卓君,Set 接口,Set接口不保证元素的顺序,不允许出现重复的元素 实现Set接口的类:HashSet、TreeSet HashSet类不允许出现重复元素,不保证集合中元素的顺序,只允许一个null元素。 TreeSet是Set的一种变体,可以实现按照
7、自然顺序排序。在添加元素时会自动将其插入到已经有序的元素序列中。 字符串按照“字典”的顺序 整数按照数字大小的顺序,HashSet和TreeSet的区别:HashSet不保证元素的顺序,而TreeSet可以自然顺序插入添加的元素,计算机学院 赵卓君,Map 接口,使用键值的成对映射来存贮元素 键值不允许重复 常用实现Map接口的类:,计算机学院 赵卓君,Iterator接口,Iterator接口可以以统一的方式对各种集合元素进行遍历,也称为“迭代器”。它还可以在遍历元素的同时移除元素。 hasNext()方法检测集合中是否还有下一个元素。 next()方法返回集合中的下一个元素。 Iterat
8、or遍历集合元素的语法:,Iterator it = 集合对象名.iterator(); while(it.hasNext() Object o=it.next(); System.out.println (o); ,计算机学院 赵卓君,Comparable 接口-1,Java.lang包中定义的一个比较对象的接口 提供抽象方法compareTo(),可以对对象进行整体排序。 使用方法:对要进行比较对象的类实现Comparable接口,重写compareTo()方法 Comparable接口不仅仅用于集合框架,可用于任何需要进行对象比较的场合。,计算机学院 赵卓君,Comparable 接口-
9、2,示例: class Student implements Comparable int id; String name; public int compareTo(Object obj) Student s=(Student)obj; return this.id-s.id; ,重写Comparable接口的compareTo方法,实现Comparable接口,计算机学院 赵卓君,Comparator 接口-1,Java.util包中提供的一个对某个对象集合进行整体排序的比较接口 提供了compare的比较方法来比较对象 使用方法: 定义实现该接口的类,重写compare方法 实例化该类的
10、对象 把该对象作为Collections.sort()方法的参数。,计算机学院 赵卓君,Comparator 接口-2,/实现Comparator接口,比较学生的姓名 class NameComp implements Comparator /重写compare方法 public int compare(Object o1,Object o2) Student s1=(Student)o1; Student s2=(Student)o2; return pareTo(); public static void main (String args) NameComparator n
11、c=new NameComparator(); Collections.sort(al,nc); .,计算机学院 赵卓君,类型安全问题-1,任何对象加入集合类后,自动转变为Object类型;取出时,需要进行强制类型转换,恢复为特定的类型,计算机学院 赵卓君,类型安全问题-2,假设在ArrayList集合对象students中添加Sudent类对象,也添加一个Teacher类的对象,会怎样?,class StudentString name;int age; class TeacherString name;int age; ArrayList students=new ArrayList();
12、 Student xm=new Student(小明, 20); Student xh=new Student(小红, 19); Student xj=new Student(小杰, 18); students.add(xm); students.add(xh); students.add(xj); Teacher jacky = new Teacher(成龙, 40); students.add(jacky);,for(Object stuo:students) Student stu = (Student)stuo; System.out.println(stu.Name); ,遍历这个集
13、合是否有问题?,能否加入一个 Teacher类的对象?,计算机学院 赵卓君,类型安全问题-3,students集合,小明,小红,小杰,成龙,添加对象,遍历集合,对象存储不易控制,类型转换容易出错,Teacher对象,运行错误,计算机学院 赵卓君,什么是泛型(Generics)?,JDK1.5引入的新特性。 在创建集合对象时就规定其允许保存的元素类型,然后由编译器负责检查所要添加元素的合法性。在取用元素时就不必再进行强制性的类型转换处理。其实就是将原本确定不变的类型参数化。,/例如:定义只能存储字符串的ArrayList集合对象 ArrayList list=new ArrayList( );
14、list.add(Welcome); /编译通过 list.add(Hello); /编译通过 list.add(new Student(); /编译错误 for(String s:list) System.out.println();/取出元素时无需进行类型转换 ,计算机学院 赵卓君,使用泛型的优点,保证集合中所有元素的数据类型相同 从泛型集合中取出元素时无需再做类型转换 向集合中添加不符合指定类型的数据,编译时会发生错误信息,避免运行时错误的发生 是原有Java类型体系的扩充,是编译时的保护。 可以提高Java应用程序的安全性、可维护性和可靠性。,计算机学院 赵卓君,泛型的向后兼容性,Ja
15、va中的泛型是可以向后兼容的。即,可以不采用泛型,继续沿用过去的做法。如左图:,ArrayList list=new ArrayList(); list.add(Welcome); /编译通过 list.add(new Student(); /编译通过,但编译后会出现以下警告:,要想避免该警告,可以在类的前面使用SuppressWarnings (unchecked)的注解,SuppressWarnings (unchecked) class Demo public static void main(String args) ArrayList list=new ArrayList(); li
16、st.add(Welcome); ,计算机学院 赵卓君,泛型高级特性1泛型类,类的定义可在类名后面用尖括号括起一个类型参数。这种由类型参数修饰的类被称为泛型类。泛型类也属于引用类型。,public class Demo private T m; public T getM( ) . ,类型参数,Demo d=new Demo( ); 则 T 代表String类型,参数T是一个类型形参,在使用该泛型类时才指定具体类型参数。,计算机学院 赵卓君,泛型高级特性2泛型方法,方法也可以泛型化,如: 实际调用该方法时才确定参数,如: evaluate(hello, hello); evaluate(new
17、 Integer(100),new Integer(300); 类型参数T也可以添加到其所在的类中,该类就变成泛型类。,public T evaluate(T a,T b) ,表示该方法为泛型方法,计算机学院 赵卓君,受限的类型参数,实例化泛型类时,可以将类型参数T的位置用任意的引用类型代替。 如果要求该类型参数是某一父类的子类时,受限的类型参数可以兼顾通用性和针对性:,public class Point ,表示该泛型类只可以传递Number类型或其子类,计算机学院 赵卓君,使用泛型方法和泛型类,什么时候使用泛型方法,而不是泛型类呢? 添加类型约束只作用于一个方法的多个参数之间、而不涉及到类
18、中的其他方法时,使用泛型方法 施加类型约束的方法为静态方法,只能将其定义为泛型方法,因为静态方法不能使用其所在类的类型参数。,计算机学院 赵卓君,泛型接口,Iterator可以在使用迭代器遍历集合元素时无需类型转换 Comparable和Comparator 其使用和以前一样,只是多了泛型的安全机制,计算机学院 赵卓君,类型通配符-1,同一个泛型类与不同的类型参数复合而成的类型之间并不存在继承的关系,见以下代码:,class Person class Student extends Person public class GenericDemo3 public static void main
19、 (String args) Vector v=new Vector( ); ,编译报错:不兼容的类型,同一个泛型类与不同类型参数复合而成的类型之间并不存在继承关系,计算机学院 赵卓君,类型通配符-2,如果刚才的继承关系是合理的,则会出现以下尴尬矛盾的代码:,class Person class Student extends Person class Teacher extends Person public class GenericDemo3 public static void main (String args) Vector v=new Vector(); Vector vp=v; Teacher t=(Teacher)vp; /违反泛型的定义! ,计算机学院 赵卓君,类型通配符-3,Vector是任何泛型类Vector的父类 Vector类型的变量在调用方法时有限制凡是必须知道具体类型参数才能进行的操作均被禁止。如,Vector上禁止调用 add()方法。但并不等于是“只读”,例如可以执行remove()方法。 Vector表示集合里面的元素是A类或其子类的对象。,计算机学院 赵卓君,受限制的通配
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 总结和工作思路(乡政府)(2篇)
- 数字化转型下C银行中小企业信贷评级体系的重构与优化
- 2025 好玩的篮球传球技巧比赛作文课件
- 2026年个人三年思想工作总结(2篇)
- 数字化赋能:三角镇政府经济发展和科技信息局人事绩效考核系统的创新与实践
- 2025年中级会计师经济法测试题测测试题及答案解析
- 数字化浪潮下:E-Learning在中小学教育中的融合与创新发展
- 数字化浪潮下网上商城购物系统的深度剖析与创新开发
- 数字化浪潮下家具产品数字虚拟展示平台的构建与实践
- 2025 可爱宠物作文课件
- 单作用式气动衬氟球阀使用说明书
- 2026春统编版语文 语文五年级下册综合性学习遨游汉字王国 汉字真有趣 教学课件
- 老年人摄影与艺术创作指导
- 2024-2025学年度洛阳职业技术学院单招《职业适应性测试》综合提升测试卷含答案详解【新】
- 2025年文化旅游演艺产业集群人才培养可行性研究
- 2026年振动传递路径的分析方法
- 2026年宁波卫生职业技术学院高职单招职业适应性考试备考题库含答案解析
- 工程项目竣工资料归档与移交规范
- 工厂防错培训课件
- 高中数学资优生导师培养模式与教学资源整合研究教学研究课题报告
- 商业综合体弱电系统施工方案
评论
0/150
提交评论