Java工具类及常用算法

上传人:壹****1 文档编号:579243880 上传时间:2024-08-26 格式:PPT 页数:50 大小:169KB
返回 下载 相关 举报
Java工具类及常用算法_第1页
第1页 / 共50页
Java工具类及常用算法_第2页
第2页 / 共50页
Java工具类及常用算法_第3页
第3页 / 共50页
Java工具类及常用算法_第4页
第4页 / 共50页
Java工具类及常用算法_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《Java工具类及常用算法》由会员分享,可在线阅读,更多相关《Java工具类及常用算法(50页珍藏版)》请在金锄头文库上搜索。

1、n课件课件/软件下载地址:软件下载地址:课件课件/软件软件/n请大家参考教材第请大家参考教材第7章的内容章的内容1n教材:教材:n?JAVA?JAVA程序设计程序设计? ?蔡翠平主编蔡翠平主编 n 北方交通大学出版社北方交通大学出版社 清华大学出版社清华大学出版社 n参考书:参考书: n?Java?Java程序设计根底程序设计根底?Head First Java?Head First Java?n?Java?Java大学教程大学教程? ?Java2?Java2核心技术核心技术? ?n?Java ?Java 编程思想编程思想? API? API文档文档n/ /2Java工具类及常用算法工具类及常

2、用算法大连理工大学大连理工大学软件学院软件学院卢志军卢志军3本讲内容本讲内容n本章主要内容本章主要内容n工具类介绍,主要涉及包和包工具类介绍,主要涉及包和包n常用算法介绍,该局部请大家自学,可以参常用算法介绍,该局部请大家自学,可以参考考?数据结构数据结构?等相关书籍等相关书籍4一个概念一个概念nJFC:JavaFoundationClass,提供了,提供了Java程程序与序与JavaVirtualMachine之间的接口,是之间的接口,是Java编程的编程的API下面开始类的介绍下面开始类的介绍5Object类类Object类是类是Java程序或类库中所有类的直接程序或类库中所有类的直接或间

3、接父类,所有对象包括数组都实现或间接父类,所有对象包括数组都实现这个类的方法这个类的方法Object类扩大了方法的适用范围,例类扩大了方法的适用范围,例Voidfun(Objecto)可以将任意类型的对象可以将任意类型的对象传递给它传递给它Object类中的主要方法介绍类中的主要方法介绍6Object类类nWait():当一个线程执行了一个对象的当一个线程执行了一个对象的wait()方方法时,该线程就会处于该对象的等待池中法时,该线程就会处于该对象的等待池中nNotify():当一个线程执行了一个对象的当一个线程执行了一个对象的notify方法时,就会唤醒该对象等待池中一个线程方法时,就会唤醒

4、该对象等待池中一个线程nnotifyAll():当一个线程执行了一个对象的当一个线程执行了一个对象的notify方法时,就会唤醒该对象等待池中所有方法时,就会唤醒该对象等待池中所有线程线程7Object类类nprotectednativeObjectclone()throwsCloneNotSupportedException;生成当前对象的一生成当前对象的一个备份个备份n应用应用clone()方法方法n参见参见mypack2.n应用该方法的对象必须实现应用该方法的对象必须实现Cloneable接口,否那接口,否那么异常。么异常。n必须重写必须重写clone()方法。方法。n在该方法中必须使用

5、在该方法中必须使用();n注意注意shallowclone与与deepclone:mypack2.8nEquals()方法提供对象是否方法提供对象是否“的判断的判断nObject类的类的equals方法实现方法实现publicbooleanequals(Objecto)nreturnthis=o;n但包装类,但包装类,String类等覆盖了该方法,类等覆盖了该方法,只要类型一致,状态和行为相等就视为相等只要类型一致,状态和行为相等就视为相等nhashCode()返回对象的散列值返回对象的散列值nObject类的类的hashCode方法实现是将对象内存方法实现是将对象内存地址转换成一个整数,所以

6、,不同对象的散地址转换成一个整数,所以,不同对象的散列值不同。列值不同。Object类类9n对象的对象的toString方法返回对象的文本表示。方法返回对象的文本表示。Object类的实现:类的实现:publicStringtoString()returngetClass().getNamegetClass().getName() + + () + + Integer.toHexString(hashCodeInteger.toHexString(hashCode()();但包装类,但包装类,String,StringBuffer类都覆盖了类都覆盖了toString方法,返回具有更加实际意义的

7、内方法,返回具有更加实际意义的内容容Object类类10publicfinalclassClassextendsObjectT:由此:由此Class对象建模的类的类型。例如,对象建模的类的类型。例如,的类型是的类型是ClassClass类对象表示正在运行的类对象表示正在运行的Java应用程序应用程序中的类和接口中的类和接口Class类对象是在类对象是在Jvm装载类时创立装载类时创立通过通过Class对象可以获得对象的域、方法等对象可以获得对象的域、方法等信息。这种获得运行时对象信息的方法又称信息。这种获得运行时对象信息的方法又称为反射为反射Reflection参见参见mypack1.Class

8、类类11包装类是根本类型的面向对象的代表包装类是根本类型的面向对象的代表int,Integer)每个根本数据类型都对应一个包装类每个根本数据类型都对应一个包装类包装类提供了对象相等判断和大小判断包装类提供了对象相等判断和大小判断包装类对象封装的数据不可更改包装类对象封装的数据不可更改immutable,假假设要更改那么需重新生成新的对象设要更改那么需重新生成新的对象参见例参见例74:Wrapperclasses包装类包装类12包装类列表包装类列表13数学类提供常见的指数运算,对数运算,三数学类提供常见的指数运算,对数运算,三角函数运算等数学运算角函数运算等数学运算Math类是类是final的的

9、Math类的构造方法是类的构造方法是private的的Math类提供的方法都是静态的类提供的方法都是静态的常用的方法有:常用的方法有:absrandommaxminroundfloorceillogexpsqrtpow三角函数等三角函数等参见例参见例Math类类 14System类类publicfinalclassSystemextendsObjectPublicstaticfinalInputStreamin:“标准输标准输入流入流PublicstaticfinalPrintStreamout:“标准输标准输出流出流PublicstaticfinalPrintStreamerr:“标准标准错

10、误输出流错误输出流Charc=();System.out.println(“hello);15System类类PublicstaticlongcurrentTimeMillis()Publicstaticvoidexit(intstatus)Publicstaticvoidgc()PublicstaticPropertiesgetProperties()详细情况请参见详细情况请参见Jdkapi.16Java中,字符串都是用类的对象来实现的中,字符串都是用类的对象来实现的两类字符串两类字符串String:创立后不会再做修改或变动的字符创立后不会再做修改或变动的字符串常量串常量StringBuff

11、er:创立后允许再做更改和变化创立后允许再做更改和变化的字符串的字符串字符串类字符串类17String类类String中的中的equals()方法覆盖了方法覆盖了Object的的equals()方法,只要内容相同就返回方法,只要内容相同就返回true.由于字符串对象的大量使用,由于字符串对象的大量使用,Java中为了节中为了节省内存空间和运行时间,在编译阶段就把所省内存空间和运行时间,在编译阶段就把所有的字符串文字放到一个文字池中,其中所有的字符串文字放到一个文字池中,其中所有相同的字符串常量被合并,只占用一个空有相同的字符串常量被合并,只占用一个空间。间。18String类类Strings1

12、=abc;Strings2=abc;if(s1=s2)System.out.println(s1,s2refertothesameobject);elseSystem.out.println(“s1,s2refertothedifferentobject);问题:共创立了几个问题:共创立了几个StringObject?19String类类Strings3=newString(“def);Strings4=newString(“def);问题:共创立了几个问题:共创立了几个StringObject?S3=s4?20String类类常见的字符串赋值方法常见的字符串赋值方法例例76:常见的字符串方法

13、应用常见的字符串方法应用例例77:21String类类在字符串中检索特定字符或子字符串,如果找到,在字符串中检索特定字符或子字符串,如果找到,那么返回匹配成功的位置,否那么返回那么返回匹配成功的位置,否那么返回-1indexOf():从字符串的首位开始查找从字符串的首位开始查找lastIndexOf():从字符串的末尾开始查找从字符串的末尾开始查找Stringstr=“HelloHelloHello;System.out.println(str.indexOf(e);/1System.out.println(str.indexOf(e,2);/6System.out.println(str.l

14、astIndexOf(e);/11System.out.println(str.indexOf(“ello,2);/6System.out.println(str.lastIndexOf(“Hello),11);/5System.out.println(str.indexOf(“Ello);/-122String类类Concat(Stringstr):把字符串把字符串str附加在当前字附加在当前字符串的末尾符串的末尾Strings1=“Hello;Strings2=s1.concat(“World);System.out.println(s1);/HelloSystem.out.println

15、(s2);/HelloWorld上述上述concat()方法并不会改变方法并不会改变s1本身的内容本身的内容23String类类subString():返回字符串的一个子字符串返回字符串的一个子字符串PublicStringsubString(intbeginIndex):子串子串起始位置起始位置beginIndex,结束位置为字符串长度结束位置为字符串长度-1PublicStringsubString(intbeginIndex,intendIndex):子串起始位置子串起始位置beginIndex,结束位置结束位置endIndex-1Stringstr=“0123456;Stringsub

16、1=str.subString(2);/23456Stringsub2=str.subString(2,5);/23424Astringbufferimplementsamutablesequenceofcharacters。以缓冲区的形式存储管理字符串数据,而不象以缓冲区的形式存储管理字符串数据,而不象String那样是那样是immutable,如果频繁地对某个字符串数据进,如果频繁地对某个字符串数据进行处理,那么应该选择行处理,那么应该选择StringBuffer,因为它封装的数,因为它封装的数据是可变的。据是可变的。字符串缓冲区的长度是可变的,它的增长策略是将原字符串缓冲区的长度是可变的

17、,它的增长策略是将原来的长度翻倍再加来的长度翻倍再加2。常用的方法有常用的方法有insert,append,substringa+4+b会被编译器解释为会被编译器解释为newStringBuffer().append(a).append(4).append(b).toString()StringBuffer类类25StringBuffer类类Append():StringBuffersb=newStringBuffer();Sb.append(“Hello);Sb.append(“World);System.out.println(sb);/HelloWorldInsert():StringB

18、uffersb=newStringBuffer(“0456);Sb.insert(1,123);System.out.println(sb);/012345626String与与StringBuffer的区别的区别String类不可编辑,类不可编辑,StringBuffer类可编辑类可编辑Strings1=newString(“abc);S1.concat(“def);StringBuffersb1=newStringBuffer(“abc);Sb1.append(“def);System.out.println(s1);/abcSystem.out.println(sb1);/abcdef画

19、出其存储空间画出其存储空间27StringTokenizer类类类提供了对字符串进行解析和分解的功能类提供了对字符串进行解析和分解的功能StringTokenizer(Stringstr)StringTokenizer(Stringstr,Stringdelim)StringTokenizer(Stringstr,Stringdelim,booleanreturnDelims)见见28集合对象就是一组对象的表示,即用一个对集合对象就是一组对象的表示,即用一个对象代表一组对象。象代表一组对象。集合中每个对象称为集合的一个元素集合中每个对象称为集合的一个元素集合与数组的区别:集合中的元素都是对象集

20、合与数组的区别:集合中的元素都是对象的引用,根本数据类型要使用其包装类才能的引用,根本数据类型要使用其包装类才能作为集合的元素,集合中各个元素的具体类作为集合的元素,集合中各个元素的具体类型可以不同,只要是从相同的类派生而来就型可以不同,只要是从相同的类派生而来就行行集合类库集合类库CollectionAPI29集合的分类集合的分类Java集合主要分为三种:集合主要分为三种:Set集集:集合中的元素不按特定方式排序,集合中的元素不按特定方式排序,并且没有重复对象并且没有重复对象List列表列表:集合中的元素按照索引位置排集合中的元素按照索引位置排序,可以有重复元素,允许按照元素在集合序,可以有

21、重复元素,允许按照元素在集合中的索引位置检索元素。与数组相似中的索引位置检索元素。与数组相似Map映射映射:集合中的每个元素包含一对集合中的每个元素包含一对键值对键值对key-value),集合中没有重复的键,集合中没有重复的键对象,值对象可以重复对象,值对象可以重复30Collection接口接口Collection 是是Collection层次结构层次结构 中的根接口。中的根接口。Collection 表示一组对象,一些表示一组对象,一些 collection 允允许有重复的元素,而另一些那么不允许。一许有重复的元素,而另一些那么不允许。一些些 collection 是有序的,而另一些那么

22、是无序是有序的,而另一些那么是无序的。的。JDK 不提供此接口的任何直接不提供此接口的任何直接 实现:它实现:它提供更具体的子接口如提供更具体的子接口如 Set 和和 List实现。实现。Java集合框架给出了几个简单通用的集合定集合框架给出了几个简单通用的集合定义,它们在包中义,它们在包中3132Set接口及接口及HashSet类类Set接口是接口是Collection的子接口,不记录元素的的子接口,不记录元素的顺序,元素不可重复顺序,元素不可重复HashSet是实现是实现Set接口的一个类,该类按照接口的一个类,该类按照哈希算法来存取集合中的对象,存取速度较哈希算法来存取集合中的对象,存取

23、速度较快快Set表示的是不重复表示的是不重复b的元素的集合的元素的集合Set中可以包含中可以包含null对象,但最多只能有一个对象,但最多只能有一个null对象对象33Set接口及接口及HashSet类类Setset=newHashSet();Strings1=newString(“hello);Strings2=s1;Strings3=newString(“world);set.add(s1);set.add(s2);set.add(s3);();/?参见参见34List接口及接口及ArrayList,Vector及及LinkedList类类List接口是接口是Collection的子接口,

24、其元素以线的子接口,其元素以线性方式存储,且允许有重复元素性方式存储,且允许有重复元素ArrayList,LinkedList,Vector是是List接口的重接口的重要实现要实现,是是Java中的中的“动态数组动态数组,元素可以元素可以参加和移除参加和移除ArrayList与与Vector类似,区别是:类似,区别是:Vector是是线程平安的线程平安的synchronized35ArrayListArrayList代表长度可变的数组,允许对元素代表长度可变的数组,允许对元素进行快速的随机访问,但是插入与删除元素进行快速的随机访问,但是插入与删除元素的速度较慢的速度较慢参见参见36Linked

25、ListLinkedList在实现中采用链表数据结构,插入在实现中采用链表数据结构,插入删除元素的速度较快,随机访问那么相对较删除元素的速度较快,随机访问那么相对较慢慢,可作为堆栈、队列使用可作为堆栈、队列使用LinkedList实现队列:参见实现队列:参见37Vector向量向量Vector是包中用来存放不同类型元素的变长是包中用来存放不同类型元素的变长数组数组其中的元素不能是简单数据类型,如其中的元素不能是简单数据类型,如int等等PublicVector(intinitCapacity,intcapacityIncrement)addElement(Objectobj)insertEle

26、ment(Object,intindex)setElementAt(Objectobj,intindex)BooleanremoveElement(Objectobj)38Vector向量向量VoidremoveElementAt(intindex)VoidremoveAllElement()ObjectelementAt(intindex)IntindexOf(Objectobj,intstart_index)IntlastIndexOf(Objectobj,intstart_index)见见Stack是是Vector的子类,故栈中对象都是的子类,故栈中对象都是Object对象或是其子类对象

27、对象或是其子类对象见见39接口接口Iterator迭代器和迭代器和Enumeration枚枚举器都是用来存取集合中元素的,建议用举器都是用来存取集合中元素的,建议用前者前者见见列举器列举器Iterator&Enumeration40Map接口和接口和Hashtable类类Map接口是将键映射到值的对象。一个映射接口是将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到不能包含重复的键,每个键最多只能映射到一个值。一个值。Objectget(Objectkey)Objectput(Objectkey,Objectvalue)Map接口的重要实现类有:接口的重要实现类有:Hashta

28、ble,HashMap,TreeMap,Properties等。其中,等。其中,Properties是是Hashtable的子类,其关键字及的子类,其关键字及值都限于值都限于String类类见见41HashMap&Hashtable二者皆提供二者皆提供Map接口的实现。接口的实现。HashMap是未同步的集合,是未同步的集合,Hashtable是是同步的集合。同步的集合。Hashtable不接受不接受null作为作为key或者或者value。HashMap接受接受null作为作为key或者或者value。42Collections类类类是一个针对类是一个针对List具有排序、查找、反序等功具有

29、排序、查找、反序等功能的类能的类Publicstaticvoidsort(Listlist)Publicstaticvoidsort(Listlist,Comparatorc)PublicstaticintbinarySearch(Listlist,Objectkey)PublicstaticintbinarySearch(Listlist,Objectkey,Comparatorc)Note:对于对于binarySearch要求要求list已按升序排好已按升序排好43Collections类类n比较规那么:比较规那么:n假设不提供假设不提供Comparator,那么那么List中的对象中的对

30、象必须实现接口必须实现接口intcompareTo(Objectobj);根据大小关系比较根据大小关系比较n提供提供Comparator:nIntcompare(Objecto1,Objecto2)nBooleanequals(Objectobj)44Generic泛型泛型Generic是新增加的是新增加的Java语言特性语言特性适用场合:集合中所有元素都是同一种类型适用场合:集合中所有元素都是同一种类型Vectorv=newVector();V.addElement(“one);v.addElement(newPerson(“me);Strings=(String)v.elementAt(0

31、);不能保证插入的元素都是同种类型不能保证插入的元素都是同种类型元素取出时必须做强制类型转换元素取出时必须做强制类型转换45Generic泛型泛型采用泛型的情况:采用泛型的情况:Vectorv=newVector();V.addElement(“one);Strings=v.elementAt(0);注:注:Java编译器会对元素做类型检查编译器会对元素做类型检查见见46增强的增强的for语句语句n在在for语句中使用一个类名、一个变量名、一语句中使用一个类名、一个变量名、一个冒号及一个集合名来代表对集合中对象的个冒号及一个集合名来代表对集合中对象的列举列举使用增强的使用增强的for语句语句F

32、or(Photophoto:album)();47增强的增强的for语句语句使用传统的使用传统的for语句语句for(inti=0;i相应包装类相应包装类拆包:根本数据类型拆包:根本数据类型相应包装类相应包装类Inta=3;ArrayListarr=newArrayList();Arr.add(newInteger(a);Integerb=(Integer)arr.get(0);Intc=();49装包与拆包装包与拆包在以上的版本中可以自动进行装包和拆包在以上的版本中可以自动进行装包和拆包Inta=3;ArrayListarr=newArrayList();Arr.add(a);/装包:自动转换成装包:自动转换成Integer对象对象Intc=(Integer)arr.get(0);/拆包:拆包:本讲内容完毕,请大家看书并自学算法局部本讲内容完毕,请大家看书并自学算法局部的内容的内容50

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号