《06基础类和工具类.ppt》由会员分享,可在线阅读,更多相关《06基础类和工具类.ppt(46页珍藏版)》请在三一办公上搜索。
1、面向对象编程,1,4.2.2 对象初始化-静态调用,public class ObjectCreation TestClass testClass=new TestClass(fieldValue);static TestClass testClass2=new TestClass(staticValue);static testClass2.test();public ObjectCreation()System.out.println(ObjectCreation init);public ObjectCreation(String name)System.out.println(Obje
2、ctCreation+name+init);,面向对象编程,2,public static void main(String args)ObjectCreation objectCreation=new ObjectCreation(object1);ObjectCreation objectCreation2=new ObjectCreation(object2);class TestClass public TestClass(String name)System.out.println(TestClass+name+init);void test()System.out.println(
3、makeInner()invoked);,面向对象编程,3,基础类和工具类,面向对象编程,5,主要内容,Java类库 语言基础类 向量类 工具类,面向对象编程,6,Java类库,Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。Java的类库大部分是由它的发明者SUN公司 提供的,这些类库称为基础类库(JFC)。API 应用程序编程接口面向过程语言 函数库(子程序包)面向对象语
4、言 类库,面向对象编程,7,Java类库,类库的结构java.lang 语言基础类库(System、Math、Thread、基本数据类型类)java.util Java的工具类库(向量、栈、日期)java.io Java的标准输入输出类库java.applet 用于实现Java Applet小程序的类库java.awt 用于构建图形用户界面的类库java.awt.event 界面用户交互控制和事件响应类 库 Java的用于实现网络功能的类库使用JDK Document查看类库,面向对象编程,8,语言基础类库-Object类,Java程序中所有类的直接或间接父类,也是类库中所有类的的父类,所有的
5、其他类都是从Object类派生。构造方法:Object()一般方法:Object clone()生成当前对象的一个拷贝。boolean equals(Object obj)比较两个对象是否 相同。Class getClass()获取当前对象所属的类信息。String toString()用来返回当前对象本身的有关 信息。,面向对象编程,9,public class BasicObjectDemo public static void main(String args)A a1=new A();A a2=new A();A a3=a1;B b=new B();System.out.println
6、(a1.equals(a2);System.out.println(a3.equals(a1);System.out.println(a1.hashCode();System.out.println(a1.toString();class A class B,面向对象编程,10,实例,public class PhoneNumber private String region;private String number;public String toString()return book.ch6.PhoneNumber+region=+region+,number=+number+;,面向对
7、象编程,11,System类,属性public static InputStream in public static PrintStream outpublic static PrintStream err 获取系统信息、完成系统操作的方法public static long currentTimeMillis();获取自1970年1月1日零时至当前系统时刻的微秒数 972370687290public static void exit(int status);强制Java虚拟机退出运行状态,并把状态信息status 返回给运行虚拟机的操作系统。System.exit(0);public s
8、tatic void gc();强制调用Java虚拟机的垃圾回收功能。,面向对象编程,12,语言基础类库:System类,System是一个功能强大的类,它提供了标准输入输出、运行时的系统信息等工具系统功能类获取系统标准输入/输出System.in,System.out,System.err获取系统信息System.currentTimeMillis()执行系统操作System.exit(0);System.gc();,面向对象编程,13,语言基础类库:数据类型类,基本数据类型 vs.数据类型类boolean vs Boolean,char vs Character等数据类型类规定了数据类型的
9、最大值、最小值构造函数:如new Integer(10);完成不同数据类型间转换,注意不同的数据类使用的方法会有不同。Double.toString(0.08)、Integer.parseInt(“123”)、Double.ValueOf(“0.08”).intValue()等,见JDK Doc,面向对象编程,14,语言基础类库:Math类,Math类用来完成常用的数学运算数学常量:E,PI数学运算Math.abs(-8.09);Math.exp(5.7);Math.random();Math.sqrt(9.08);Math.pow(2,3);/乘方Math.round(99.6);均为sta
10、tic,使用时无需创建实例 Math.method(variable);,面向对象编程,15,数学运算的Math类,属性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);public static double max(double a,double b);public static do
11、uble pow(double a,double b);public static double random();/产生01之间伪 随机数,面向对象编程,16,数学运算的Math类,public 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.println(Math.PI);3.14159265System.out.println(Math.p
12、ow(2,3);8.0System.out.println(Math.round(99.6);100System.out.println(Math.abs(-8.09);8.09,面向对象编程,17,public class StringDemo public static void main(String args)String s;s=String test;s=new String(String test);int stringLength=s.length();System.out.println(stringLength=+stringLength);boolean startTes
13、t=s.startsWith(Str);boolean endTest=s.endsWith(est);System.out.println(startTest=+startTest);System.out.println(endTest=+endTest);int blankIndex=s.indexOf();System.out.println(blankIndex=+blankIndex);,字符串相关类String,面向对象编程,18,int subStringIndex=s.indexOf(est);System.out.println(subStringIndex=+subStri
14、ngIndex);int lastIndex=s.lastIndexOf(s);System.out.println(lastIndex=+lastIndex);String s2=String test2;int compare=pareTo(s);System.out.println(compare=+compare);boolean equalTest=s2.equals(s);System.out.println(equalTest=+equalTest);char singleChar=s.charAt(3);System.out.println(singleChar=+single
15、Char);,面向对象编程,19,String subString=s.substring(3);System.out.println(subString=+subString);String trimString=s.trim();System.out.println(trimString=+trimString+);String upperCase=s.toUpperCase();System.out.println(upperCase=+upperCase);String lowerCase=s.toLowerCase();System.out.println(lowerCase=+lo
16、werCase);,面向对象编程,20,字符串相关类StringBuffer,public class StringBufferDemo public static void main(String args)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
17、);System.out.println(buffer=+buffer.toString();揭秘StringBuffer的capacity.mht,面向对象编程,21,6.3 集合,Collection-Set:不允许重复元素存在;无保存顺序-List:允许重复元素存在,保存顺序-Iterator接口:可以用来遍历集合所有数据-Map接口:表示关键字-值的集合,面向对象编程,22,6.3 集合-Set,public class SetDemo public static void main(String args)Set set=new HashSet();set.add(1);set.ad
18、d(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);,面向对象编程,23,6.3 集合-List,public class ListDemo public 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
19、(7.0);list.add(4);System.out.println(list=+list);,面向对象编程,24,Iterator接口,public class IteratorDemo public 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();while(iterator.hasNex
20、t()System.out.println(iterator.next();iterator.remove();System.out.println(set=+set);,面向对象编程,25,ListIterator接口,public class ListIteratorDemo public 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.listIterat
21、or();while(iterator.hasNext()System.out.println(iterator.next();while(iterator.hasPrevious()System.out.println(iterator.previous();,面向对象编程,26,Map接口,Map接口:表示关键字-值的集合,面向对象编程,27,Map接口,public class MapDemo public static void main(String args)Map map=new HashMap();map.put(1,value1);map.put(2,value2);map.
22、put(3,value3);map.put(4,value4);System.out.println(map.get(1);,面向对象编程,28,Set keySet=map.keySet();for(Iterator iterator=keySet.iterator();iterator.hasNext();)System.out.println(iterator.next();Collection values=map.values();for(Iterator iterator=values.iterator();iterator.hasNext();)System.out.printl
23、n(iterator.next();Set entrySet=map.entrySet();for(Iterator iterator=entrySet.iterator();iterator.hasNext();)System.out.println(iterator.next();,面向对象编程,29,运行结果,面向对象编程,30,向量类-Vector,java.util.VectorVector是一组对象的集合,Vector可以追加对象元 素的数量,方便地修改和维护序列中的对象。适合于如下的情况需要处理的对象数目不定序列中元素都是对象,而不是基本数据类型的量需要做频繁的元素插入和删除需要
24、定位序列中的对象或其他查找操作 0 1 2 3,面向对象编程,31,创建向量类对象,创建向量类的对象Vector myVector=new Vector();创建空的向量对象(初始容量为10)优化存储管理Vector myVector=new Vector(100);创建空的向量对象(初始容量为100)Vector myVector=new Vector(100,50);创建空的向量对象(初始容量为100,增量 为50),面向对象编程,32,向量元素操作,追加元素 addElement(Object obj)插入元素 insertElement(Object obj,int index)修改向
25、量中的元素 setElementAt(Object obj,int index)删除向量中的指定元素 removeElementAt(int index)Boolean removeElement(Object obj)removeAllElements(),面向对象编程,33,向量元素操作,取出向量中的指定元素 Object get(int index)测试对象在向量中是否存在 boolean contains(Object obj)查找指定元素的位置 int indexOf(Object obj)int indexOf(Object obj,int start_index),面向对象编程,
26、34,向量元素操作,返回指定位置的元素 Object elementAt(int index)由于返回的是Object类型的对象,在使用前要 进行强制类型转换,将返回的对象引用转换成 Object类的某个具体子类的对象。String str=(String)MyVector.elementAt(0);返回一个包含向量中所有元素的对象数组 Object toArray(),面向对象编程,35,获取向量信息,清空向量(删除所有元素)clear()测试向量是否为空 boolean isEmpty()当前向量元素数量 int size()向量当前容量 int capacity(),面向对象编程,36,
27、例:CatsAndDogs.java public class CatsAndDogs public static void main(String args)Vector cats=new Vector();for(int i=0;i 7;i+)cats.addElement(new Cat(i);/Not a problem to add a dog to cats:cats.addElement(new Dog(7);for(int i=0;i cats.size();i+)(Cat)cats.elementAt(i).print();/Dog is detected only at r
28、un-time/改为:if(cats.elementAt(i)instanceof Cat)/:,缺点:Object的类型不确定;对象的类型不匹配只能在运行期才能被检测出来,面向对象编程,37,工具类库:日期,Calendar(表示日期和时间)getInstance():得到表示当前时间的实例get(int):获取相应信息,如get(Calendar.YEAR)set(int,int):如 set(Calendar.YEAR,1999)set(year,month,date):set用来设置信息Calendar.getTime():得到当前时间的Date对象GregorianCalendar有
29、不同的构造方法,用来创建实例。如:GregorianCalender(year,month,date,),面向对象编程,38,日期类Date,构造方法 Date()初始化时间对象方法 long getTime()获取自1970.1.1零时至当 前系统时刻的微秒数 其他若干方法 int getDate()获取系统当前日期,面向对象编程,39,日期类Calendar,抽象类,在Date对象和一组整数域之间进行转换:YEAR,MONTH,DAY,HOUR,Calendar c=Calendar.getInstance();int c.get(Calendar.YEAR)int c.get(Calen
30、dar.MONTH)(1月为0)int c.get(Calendar.DATE)int c.get(Calendar.HOUR)int c.get(Calendar.MINUTE)int c.get(Calendar.SECOND)Date c.getTime(),面向对象编程,40,日期类Calendar,c.set(Calendar.YEAR,2000)c.set(Calendar.MONTH,10)(11月)c.set(Calendar.DATE,7)c.set(2000,10,7)c.set(2000,10,7,17,48,20),面向对象编程,41,例题-银行帐户,面向对象编程,42
31、,工具类库:栈,java.util.Stack(常用的线性数据结构)栈底:固定的一端栈顶:数据元素进出的一端遵循:“后进先出”原则常用的堆栈操作创建堆栈:Stack()压栈操作:push(Object)弹栈操作:pop(),面向对象编程,43,堆栈Stack,是Vector的子类构造方法 Stack()建立一个新的栈方法 boolean empty()测试栈是否空 Object peek()查看栈顶元素 Object pop()弹栈(出栈)Object push(Object item)压栈(进栈)int search(Object item)查找栈中元素,返回距栈顶 位置(栈顶位置为1),栈底,栈顶,面向对象编程,44,堆栈例-表达式计算,#,2,*,(,3,+,5,8,16,-,4,12,操作数栈 s1 操作符栈 s2,面向对象编程,45,堆栈例-表达式计算,栈顶运算符 表达式当前运算符,面向对象编程,46,课后作业,P144.第4、6、8、10题,
链接地址:https://www.31ppt.com/p-5299844.html