1、六、基础类库和工具类库 Java类库 字符串相关类 集合 日期与时间基础类库和工具类库21Java类库 熟悉Java基础类库 掌握Object 理解基本数据类型的封装 掌握System和Math类基础类库和工具类库31Java类库 Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。Java的类库大部分是由它的发明者SUN公司 提供的,这些类库称为JFC(基础类库,Java Fo
2、undation Class Library)。API 应用程序编程接口 面向过程语言 函数库(子程序包)面向对象语言 类库基础类库和工具类库4类库的结构java.lang 语言基础类库(System、Math、Thread、基本数据类型类)java.util Java的工具类库(向量、栈、日期)java.io Java的标准输入输出类库java.applet 用于实现Java Applet小程序的类库java.awt 用于构建图形用户界面的类库java.awt.event 界面用户交互控制和事件响应类库java.awt.image 用来处理和操纵来自于网上图片的工具 类库 Java的用于实现
3、网络功能的类库java.sql 用来时间JDBC的类库,利用它可以使Java访 问各种数据库基础类库和工具类库5 使用JDK Document查看类库在JDK文档的解压目录下,选择index.htmlindex.html进入JDK文档,然后在文档中单击“API&LanguageAPI&Language”“Java 2 Platform API SpecificationJava 2 Platform API Specification”就可以打开JDK中的类库。注意文档中标记为Deprecated的方法!基础类库和工具类库6Object类Java程序中所有类的直接或间接父类,也是类库中所有类的
4、的父类,所有的其他类都是从Object类派生。构造方法:Object()一般方法:Object clone()生成当前对象的一个拷贝。boolean equals(Object obj)比较两个对象是否相同。Class getClass()获取当前对象所属的类信息。String toString()用来返回当前对象本身的有关信息。int hashCode()返回对象的哈希码。finalize()定义回收当前对象时所需要完成的清理工作。基础类库和工具类库7【例6.1】Object中定义方法的使用。package book.ch6;public class BasicObjectDemo publ
5、ic static void main(String args)A a1=new A();A a2=new A();A a3=a1;System.out.println(a1.equals(a2);System.out.println(a3.equals(a1);System.out.println(a1.hashCode();System.out.println(a1.toString();class A falsetrue33263331Book.ch6.Alfb8ee3这两者关系这两者关系如何?如何?基础类库和工具类库8Class类Java运行时系统会对所有的对象进行类型识别public
6、 final Class extends Object 一般方法:String getName()返回类名。Field getFields()返回类的public域对象。Method getMethods()返回类的public方法对象。Package getPackage()返回该类的包。对Field 类String getName()取域名对Method 类 String getName()取方法名对Package 类String getName()基础类库和工具类库9数据类型类基本数据类型 vs.数据类型类如:boolean vs Boolean,char vs Character等数据
7、类型类规定了数据类型的最大值、最小值构造函数:如new Integer(10);完成不同数据类型间转换,注意不同的数据类使用的方法会有不同。如:Double.toString(0.08)、Integer.parseInt(“123”)、Double.ValueOf(“0.08”).intValue()等,见JDK Doc【例6.2】基本数据封装类。基础类库和工具类库10public class BasicDataTypeClassDemo public BasicDataTypeClassDemo()public static void main(String args)Integer i=n
8、ew Integer(256);Integer j=new Integer(256);System.out.println(i.intValue()*2);System.out.println(i.doubleValue();System.out.println(i=+i.toString();System.out.println(i=j);System.out.println(pareTo(j);/i大取大取1,i小取小取-1 System.out.println(Integer.parseInt(100)*2);System.out.println(100*2=+Integer.toStr
9、ing(100*2);int k;k=Integer.valueOf(1010,2);System.out.println(k);System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);512256.0i=256false0200100*2=200102147483674-2147483674基础类库和工具类库11Math类Math类用来完成常用的数学运算数学常量:E,PI数学运算Math.abs(-8.09);/取绝对值Math.exp(5.7);/自然对数Math.random();/取得一个随
10、机数Math.sqrt(9.08);/开平方Math.pow(2,3);/乘方Math.round(99.6);/取得最接近的整数均为static,使用时无需创建实例 Math.method(variable);基础类库和工具类库12属性public final static double E;/数学常量epublic final static double PI;/圆周率常量方法(均为静态方法)public static int abs(int i);public static double sin(double a);public static double log(double a);p
11、ublic static double max(double a,double b);public static double pow(double a,double b);public static double random();/产生01之间伪随机数基础类库和工具类库13public static double exp(double a);public static int round(float a);public static double sqrt(double a);例:System.out.println(Math.E);/2.718281828.System.out.prin
12、tln(Math.PI);/3.14159265System.out.println(Math.pow(2,3);/8.0System.out.println(Math.round(99.6);/100System.out.println(Math.abs(-8.09);/8.09基础类库和工具类库14System类 System是一个功能强大的类,它不能被实例化,是一个非常典型的静态方法类,但提供了标准输入输出、运行时的系统信息等工具。系统功能获取系统标准输入/输出System.in,System.out,System.err获取系统信息System.currentTimeMillis()执
13、行系统操作System.exit(0);System.gc();/指定运行垃圾回收器基础类库和工具类库15 属性 public static InputStream in public static PrintStream out public static PrintStream err 获取系统信息、完成系统操作的方法 public static long currentTimeMillis();获取自1970年1月1日零时至当前系统时刻的微秒数 public static void exit(int status);强制Java虚拟机退出运行状态,并把状态信息status 返回给运行虚拟
14、机的操作系统。如:System.exit(0);public static void gc();强制调用Java虚拟机的垃圾回收功能。基础类库和工具类库162字符串相关类 熟悉字符串相关类 掌握String和StringBuffer 了解StringTokenizer 基础类库和工具类库17String Java语言中将字符串作为对象来处理,定义了相应的语言中将字符串作为对象来处理,定义了相应的类类String,位于,位于java.lang包中,每一个字符串常量就是包中,每一个字符串常量就是String类的一个实例。下表是类的一个实例。下表是String类常用的方法。类常用的方法。方方 法法说
15、说 明明public int length()返回字符串的长度。返回字符串的长度。public booleanequals(Object anObject)将给定字符串与当前字符串相比较,若两字将给定字符串与当前字符串相比较,若两字符串相等,则返回符串相等,则返回true,否则返回否则返回false。public String substring(int beginIndex)返回字符串中从返回字符串中从beginIndex开始的子串。开始的子串。public String substring(int beginIndex,int endIndex)返回从返回从beginIndex开始到开始到
16、endIndex的子串。的子串。public char charAt(int index)返回返回index指定位置的字符。指定位置的字符。public int indexOf(String str)返回返回str在字符串中第一次出现的位置。在字符串中第一次出现的位置。public String replace(char oldChar,char newChar)以以newChar字符替换串中所有字符替换串中所有oldChar字符。字符。public String trim()去掉字符串的首尾空格。去掉字符串的首尾空格。基础类库和工具类库18String类的重要特性之一就是线程访问安全。因为S
17、tring类对象实际上是不可改变的,任何涉及到对String类表示的字符串的操作方法,都是返回一个新创建的String类对象,因此在对一个String类型的使用中,往往会同时创建大量并不需要的String实例,消耗了不必要的系统资源。【例6.3】字符串方法的使用。见教材P126页基础类库和工具类库19StringBuffer为了解决String类的使用对系统资源带来的不利影响,基本类库提供了StringBuffer类。该类封装了一个字符数组,并提供了对这个数组的操作方法。下表是StringBuffer类常用的方法。方方 法法功功 能能StringBuffer()创建一个空的创建一个空的Stri
18、ngBuffer对象对象StringBuffer(int length)设置初始化容量设置初始化容量StringBuffer(String s)用已有用已有String对象初始化对象初始化StringBuffer对象对象StringBuffer append(Object obj)增加增加Object对象的字符串表示对象的字符串表示StringBuffer insert(int offset,Object obj)在在offset位置插入位置插入Object对象的字符串表示对象的字符串表示void setCharAt(int index,char ch)将将index位置的字符改为位置的字符改
19、为chString to String()将可变串变为不可变串,以便输出将可变串变为不可变串,以便输出char charAt(int index)返回返回index指定位置的字符指定位置的字符int capacity()获得当前获得当前StringBuffer对象的容量对象的容量int indexOf(String str)返回返回str子串在当前子串在当前StringBuffer对象中的位置对象中的位置基础类库和工具类库20【例6.4】StringBuffer类的使用public class StringBufferDemo public static void main(String ar
20、gs)StringBuffer buffer=new StringBuffer();buffer.append(S);buffer.append(tringBuffer);System.out.println(buffer.charAt(1);System.out.println(buffer.capacity();System.out.println(buffer.indexOf(tring);System.out.println(buffer=+buffer.toString();t161Buffer=StringBuffer基础类库和工具类库21StringTokenizerString
21、Tokenizer提供了对字符串的解析和分割功能,使用这个类可以对一个字符串按照某些子串的特征进行分割。【例6.4】StringTokenizer的使用。import java.util.StringTokenizer;public class StringTokenizerDemo public static void main(String args)String s=demo of StringTokenizer;StringTokenizer tokenizer=new StringTokenizer(s,);while(tokenizer.hasMoreTokens()System.
22、out.println(tokenizer.nextToken();demoofStringTokenizer基础类库和工具类库22 了解集合API 熟悉Set,List,Iterator接口 熟悉Map接口 了解集合数据遍历、排序和查找集合基础类库和工具类库23 集合是一系列对象的聚集,是代表一组对象的一个对象,集合中的每一个对象称为集合的元素,每一个元素都具有一定的数据类型,任何数据类型的对象都可以存放在集合中。集合接口Collection集合接口Set集合接口List集合接口Iterator集合接口Map基础类库和工具类库24 Collection接口分布在java.util包下,定义了
23、聚集形式数据的基本操作方法,主要包括:public boolean add(Object)加入一个元素public boolean addAll(Collection)将另外一个集合中的元素全部加入指定的集合中public void clear()清除所有的元素public boolean contains(Object)判断包含某特定的元素否public Iterator iterator()得到迭代器public boolean remove(Object)删除一个元素public int size()得到集合中元素的总数public isEmpty()判断集合是否为空public Obj
24、ect toArray()将集合转化为对象数组Collection接口基础类库和工具类库25 Collection接口的子接口,定义了一个不重复元素的集合。Set接口对于集合中对于集合中的任何两个的任何两个元素元素x和和y,x.equals(y)始终为始终为false!基础类库和工具类库26基础类库和工具类库27Constructor SummaryHashSetHashSet()Constructs a new,empty set;the backing HashMap instance has default initial capacity(16)and load factor(0.75
25、).HashSetHashSet(Collectionc)Constructs a new set containing the elements in the specified collection.HashSetHashSet(intinitialCapacity)Constructs a new,empty set;the backing HashMap instance has the specified initial capacity and default load factor(0.75).HashSetHashSet(intinitialCapacity,floatload
26、Factor)Constructs a new,empty set;the backing HashMap instance has the specified initial capacity and the specified load factor.HashSet类的成员方法类的成员方法基础类库和工具类库28Method Summarybooleanaddadd(Ee)Adds the specified element to this set if it is not already present.voidclearclear()Removes all of the elements
27、 from this set.Objectcloneclone()Returns a shallow copy of this HashSet instance:the elements themselves are not cloned.booleancontainscontains(Objecto)Returns true if this set contains the specified element.booleanisEmptyisEmpty()Returns true if this set contains no elements.Iteratoriteratoriterato
28、r()Returns an iterator over the elements in this set.booleanremoveremove(Objecto)Removes the specified element from this set if it is present.intsizesize()Returns the number of elements in this set(its cardinality).基础类库和工具类库29【例例6.5】Set接口和接口和HashSet类的使用。类的使用。import java.util.Set;import java.util.Has
29、hSet;public class SetDemopublic static void main(String args)Set set=new HashSet();/父接口引用变量指向子类对象。父接口引用变量指向子类对象。set.add(“1”);/添加元素添加元素set.add(2);set.add(3);set.add(4);set.add(new Integer(1);/添加扩展数据类型的元素添加扩展数据类型的元素set.add(new Double(7.0);set.add(“3”);/添加重复元素添加重复元素System.out.println(“set=”+set.toStrin
30、g();/输出集合中的元素输出集合中的元素Object array=set.toArray();/将集合转化为数组将集合转化为数组for(int i=0;iarray.length;i+)System.out.println(tarray+i+=+arrayi.toString();基础类库和工具类库30Array1和array5是重复的吗?为什么?基础类库和工具类库31【例例6.6】使用使用Set接口和接口和HashSet类表示类表示family。import java.util.Set;import java.util.HashSet;class Fatherprivate String
31、name;Father(String name)this.name=name;public String toString()return name;class Motherprivate String name;Mother(String name)this.name=name;public String toString()return name;class Daughterprivate String name;Daughter(String name)this.name=name;public String toString()return name;class Dogprivate
32、String name;Dog(String name)this.name=name;public String toString()return name;基础类库和工具类库32public class Family public static void main(String args)Set family=new HashSet();family.add(new Father(father:Rhette);family.add(new Mother(mathor:Scarlet);family.add(new Daughter(“daughter:Alice);family.add(ne
33、w Dog(dog:Windy);System.out.println(This is my family!);System.out.println(family=+family.toString();This is my family!family=daughter:Alice,dog:Windy,mathor:Scarlet,father:Rhette注意他们出现的顺序无序的!基础类库和工具类库33 Collection接口的子接口,定义了一个有序元素的集合,在使用上类似动态数组/变长数组,可存放的元素数量随插入操作自动进行调整。List接口允许重复的允许重复的元素存在!元素存在!基础类库
34、和工具类库34List接口的部分方法方方 法法功功 能能public void add(int index,Object e)在在index处插入处插入epublic boolean assAll(int index,Collection c)将将c中的元素全部加入到本集合中中的元素全部加入到本集合中index处处public Object set(int indext,Object e)用用e替换替换index处的元素处的元素public Object get(int index)返回返回Index处的元素处的元素public Object remove(int index)删除删除Inde
35、x处的元素处的元素public int indexOf(Object e)返回返回e首次出现的位置,无则返回首次出现的位置,无则返回-1public int lastIndexOf(Object e)返回返回e末次出现的位置,无则返回末次出现的位置,无则返回-1public List subList(int fromIndex,int toIndex)返回一个子集,从返回一个子集,从fromIndex开始,开始,到到toIndex结束结束public ListIterator listIterator()得到迭代器得到迭代器public ListIterator listIterator(in
36、t index)得到迭代器,该迭代器从得到迭代器,该迭代器从index开始开始基础类库和工具类库35【例例6.7】List接口和ArrayList类的使用。import java.util.*;public class ListDemopublic static void main(String args)List list=new ArrayList();/父接口引用变量指向子类对象。父接口引用变量指向子类对象。list.add(1);/添加元素添加元素list.add(2);list.add(3);list.add(4);list.add(5);list.add(new Double(7.
37、0);/添加扩展数据类型的元素添加扩展数据类型的元素list.add(4);/添加重复元素添加重复元素System.out.println(list=+list);/输出集合中的元素输出集合中的元素Object array=list.toArray();/将集合转化为数组将集合转化为数组for(int i=0;iarray.length;i+)System.out.println(tarray+i+=+arrayi.toString();基础类库和工具类库36Array3和array6是重复的吗?为什么?基础类库和工具类库37Iterator接口Iterator接口主要用来遍历集合中的元素,其
38、主要方法包括:【例例6.8】使用使用Iterator接口遍历集合中的元素。接口遍历集合中的元素。Method SummarybooleanhasNexthasNext()Returns true if the iteration has more elements.Objectnextnext()Returns the next element in the iteration.voidremoveremove()Removes from the underlying collection the last element returned by the iterator(optional o
39、peration).基础类库和工具类库38import java.util.Set;import java.util.HashSet;import java.util.Iterator;public class IteratorDemopublic static void main(String args)Set set=new HashSet();set.add(1);set.add(2);set.add(3);set.add(4);set.add(new Integer(1);set.add(new Double(7.0);Iterator iterator=set.iterator();
40、/得到集合while(iterator.hasNext()/列举集合中的元素System.out.println(iterator.next();iterator.remove();/删除集合中当前的元素System.out.println(set=+set);基础类库和工具类库39基础类库和工具类库40ListIterator是Iterator的子接口,它针对List集合有序的特点,提供了双向检索和元素存取的功能,其方法如下表:voidaddadd(Ee)Inserts the specified element into the list(optional operation).boole
41、anhasNexthasNext()Returns true if this list iterator has more elements when traversing the list in the forward direction.booleanhasPrevioushasPrevious()Returns true if this list iterator has more elements when traversing the list in the reverse direction.Objectnextnext()Returns the next element in t
42、he list.intnextIndexnextIndex()Returns the index of the element that would be returned by a subsequent call to next.Objectpreviousprevious()Returns the previous element in the list.intpreviousIndexpreviousIndex()Returns the index of the element that would be returned by a subsequent call to previous
43、.voidremoveremove()Removes from the list the last element that was returned by next or previous(optional operation).voidsetset(Ee)Replaces the last element returned by next or previous with the specified element(optional operation).基础类库和工具类库41【例6.9】使用ListIterator接口列举集合中的元素。import java.util.List;impo
44、rt java.util.ArrayList;import java.util.ListIterator;public class ListIteratorDemopublic static void main(String args)List list=new ArrayList();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);ListIterator iterator=list.listIterator();while(iterator.hasNext()/正向列举System.out.println(“t”+it
45、erator.next();while(iterator.hasPrevious()/逆向列举System.out.println(“t”+iterator.previous();基础类库和工具类库42正向列举反向列举基础类库和工具类库43MapCollection接口处理单一对象数据集合,Map接口用于处理“关键字-值”这样形式的集合。Map中包括了关键字的集合、值的集合,以及关键字和值的映射关系。实现Map接口的类有很多,其中最常用的是HashMap和HashTable(线程访问安全的)。关键字和值只能是String类型,常用于读去配置信息。基础类库和工具类库44Method Summar
46、y voidvoidclearclear()Removes all of the mappings from this map(optional operation).booleanbooleancontainsKeycontainsKey(Objectkey)Returns true if this map contains a mapping for the specified key.booleanbooleancontainsValuecontainsValue(Objectvalue)Returns true if this map maps one or more keys to
47、the specified value.SetSetentrySetentrySet()Returns a Set view of the mappings contained in this map.booleanbooleanequalsequals(Objecto)Compares the specified object with this map for equality.ObjectObjectgetget(Objectkey)Returns the value to which the specified key is mapped,or null if this map con
48、tains no mapping for the key.intinthashCodehashCode()Returns the hash code value for this map.基础类库和工具类库45 booleanbooleanisEmptyisEmpty()Returns true if this map contains no key-value mappings.SetSetkeySetkeySet()Returns a Set view of the keys contained in this map.V Vputput(Kkey,Vvalue)Associates th
49、e specified value with the specified key in this map(optional operation).voidvoidputAllputAll(Mapm)Copies all of the mappings from the specified map to this map(optional operation).V Vremoveremove(Objectkey)Removes the mapping for a key from this map if it is present(optional operation).intintsizesi
50、ze()Returns the number of key-value mappings in this map.CollectionCollectionvaluesvalues()Returns a Collection view of the values contained in this map.基础类库和工具类库46【例6.10】使用Map接口表示family。import java.util.*;public class FamilyDemopublic static void main(String args)Map family=new HashMap();family.put