第6章 基础类库和工具类库_第1页
第6章 基础类库和工具类库_第2页
第6章 基础类库和工具类库_第3页
第6章 基础类库和工具类库_第4页
第6章 基础类库和工具类库_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,1,第6章基础类库和工具类库,.,2,引言,我们很少见到一个家具厂要自己种树、伐木来提供木材,也很少见五金厂自己通过冶炼来提供钢材,但在以往的程序设计中,这种一切从头开始的做法却是常见的。这种做法会带来大量的重复工作,解决这一问题的方法是软件重用。面向对象技术是迄今为止提高软件可重用性的最有效途径,其中类和类的继承机制为提高程序的可重用性提供了强有力的支持。Java有一个功能强大的资源库,通过类和类的继承机制将资源库中的资源组织起来,Java将功能相关的类组织成包,使程序员可以很方便地使用资源库。Java资源库中类的继承层次和包的组织呈树型结构,Java资源库的这种组织方式使程序员进行Java编程时有“背靠大树好乘凉”的感觉。,.,3,6.1Java基础类,Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(ApplicationProgramInterface),它可以帮助开发者方便、快捷地开发Java程序。这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。Java的类库大部分是由它的发明者SUN公司提供的,这些类库称为基础类库(JFC)。API应用程序编程接口面向过程语言函数库(子程序包)面向对象语言类库,.,4,6.1.1基础类库,类库的结构java.lang语言基础类库(System、Math、Thread、基本数据类型类)java.utilJava的工具类库(向量、栈、日期)java.ioJava的标准输入输出类库java.applet用于实现JavaApplet小程序的类库java.awt用于构建图形用户界面的类库java.awt.event界面用户交互控制和事件响应类库java.awt.image用于处理和操纵来自网上的图片Java的用于实现网络功能的类库java.sql用于访问数据库的类库使用JDKDocument查看类库,.,5,6.1.2语言基础类库-Object类,Java程序中所有类的直接或间接父类,也是类库中所有类的的父类,所有的其他类都是从Object类派生。构造方法:Object()一般方法:,.,6,例6-1Object中定义的方法的使用,publicclassBasicObjectDemopublicstaticvoidmain(Stringargs)Aa1=newA();Aa2=newA();Aa3=a1;Bb=newB();System.out.println(a1.equals(a2);System.out.println(a3.equals(a1);System.out.println(a1.hashCode();System.out.println(a1.toString();classAclassB,falsetrue3526198A35ce36,.,7,6.1.3语言基础类库:数据类型类,Java的数据类型及其对应的基本数据类型,在Java中,数据类型包装类用于封装基本数据类型的有关信息和操作。数据类型包装类是由多个类组成的一个集合,每种基本数据类型均存在相应的对象封装类,.,8,1.Character类,构造方法:publicCharacher(charvalue)例:Characherch=newCharacher(a);常用方法及说明,.,9,2.Integer类,构造方法:publicInteger(intvalue)publicInteger(Strngs)throwsNumberFormatException例:Integera=newInteger(1);Integera1=newInteger(1);,常用类变量及说明,常用方法及说明,inti=Integer.parseInt(“888”);intj=Integer.valueOf(“111”).intValue();,字符串与整形数据的转化,.,10,数据类型类Integer,Integer类的公用属性方法。,.,11,数据类型类Integer,Integer类的公用属性常用方法。,可进行进制转换,.,12,例子:2进制转换!,publicclassIntegerApppublicstaticvoidmain(Stringarg)inti=Integer.valueOf(1234).intValue();System.out.println(十进制数+i+对应的二进制数是:+Integer.toBinaryString(i);System.out.println(十进制数+i+对应的十六进制数是:+Integer.toHexString(i);System.out.println(Integer对应的基本类型是:+Integer.TYPE.toString();System.out.println(Integer最大值为:+Integer.MAX_VALUE);System.out.println(Integer最小值为:+Integer.MIN_VALUE);,.,13,运行结果:,十进制数1234对应的二进制数是:10011010010十进制数1234对应的十六进制数是:4d2Integer对应的基本类型是:intInteger最大值为:2147483647Integer最小值为:-2147483648,.,14,6.1.4语言基础类库:System类,java.io包中提供了多种输入/输出流,但是Java把最基本的输入/输出流类放在了java.lang.System类中。这个类提供了一个很重要的内容标准输入/输出流。标准输入流用于从标准输入设备输入数据;标准输出流用于向标准输出设备输出数据。System类在声明时使用了final关键字,而且该类中的所有方法和变量都是静态的,因此该类不能被实例化或派生子类。要使用类变量。如:System.out。调用类的方法。如:System.getProperty(参数),.,15,System类中保存了重要的全局函数和变量:System.err是标准错误输出流,用于输出错误信息。System.in是标准输入流,其read方法提供了一种简便的数据读取手段。这个方法可读取用户在键盘上输入的字符。System.out是标准输出流,它是java.io包中PrintStream类的一个对象,其println方法用于输出数据。System.out.println(“HelloWorld!”)System.out.printlnSystem.out.print,.,16,例6-2:System类,classUserNameTestpublicstaticvoidmain(Stringargs)Stringname;name=System.getProperty();/调用getProperty方法,获取机器的用户名System.out.println(用户名:+name);/屏幕显示用户名,.,17,System类,属性publicstaticInputStreaminpublicstaticPrintStreamoutpublicstaticPrintStreamerr获取系统信息、完成系统操作的方法publicstaticlongcurrentTimeMillis();获取自1970年1月1日零时至当前系统时刻的微秒数972370687290publicstaticvoidexit(intstatus);强制Java虚拟机退出运行状态,并把状态信息status返回给运行虚拟机的操作系统。System.exit(0);publicstaticvoidgc();强制调用Java虚拟机的垃圾回收功能。,.,18,6.1.5语言基础类库:Math类,java.lang.Math类是标准的数学类,封装了一些数学函数和常量。在这个类中,数的大小范围跟具体的操作平台有关。与System类相似,java.lang.Math类也不能被子类化或实例化,因为它的所有方法和变量也都是静态的。二个类变量:,.,19,三角函数,下面的三个方法接受一个double类型的且以弧度为单位的角度值,并返回相应的运算结果:sin(doublea)返回角度a的sin值。cos(doublea)返回角度a的cos值。tan(doublea)返回角度a的tan值。这些方法以double类型的值作为参数并返回相应的三角运算结果。下面的方法是反三角函数:asin(doubler)返回sin值为r的角度值。acos(doubler)返回cos值为r的角度值。atan(doubler)返回tan值为r的角度值。,.,20,pow(doubley,doublex)返回y的x次方例如,Math.pow(2.0,3.0)返回结果为8.0exp(doublex)返回x的底数log(doublex)返回x的自然对数sqrt(doublex)返回x的平方根Random()产生0-1之间随机数舍入ceil(doublea)返回大于或等于a的最小整数值floor(doublea)返回小于或等于a的最大整数值round(floata)返回舍入尾数后最接近a的整型值,.,21,多态方法:abs、min和max,下面是几个应用于int、long、float和double类型的多态方法:abs(a)返回a的绝对值。max(a,b)返回a和b的最大值。min(a,b)返回a和b的最小值。,.,22,例6-3:math类的方法使用,importjava.lang.*;importjava.io.*;publicclassMathDemopublicstaticvoidmain(Stringargs)System.out.println(Math.E=+Math.E);/输出常量eSystem.out.println(Math.PI=+Math.PI);/输出常量System.out.println(ceil(E)=+Math.ceil(Math.E);/输出大于等于e的最小双精度数System.out.println(floor(E)=+Math.floor(Math.E);/输出小于等于e的最大双精度数System.out.println(rint(PI)=+Math.rint(Math.PI);/将双精度值转化为一个整数值System.out.println(lnE=+Math.log(Math.E);/计算e的自然对数值System.out.println(sin(pi/4)=+Math.sin(Math.PI/4);/计算/4的正弦值,.,23,例6-3:math类的方法使用,trydoublerand=Math.random();doublerand2=-Math.random();System.out.println(power(+rand+,+rand2+)=+Math.pow(rand,rand2);/求幂catch(ArithmeticExceptionex)System.out.println(ArithmeticExceptionoccured!);,Math.E=2.718281828459045Math.PI=3.141592653589793ceil(E)=3.0floor(E)=2.0rint(PI)=3.0lnE=1.0sin(pi/4)=0.7071067811865475power(0.9726179323562354,-0.12166141769193639)=1.0033835119412022,.,24,6.2字符串相关类,6.2.1String类String类的特性是:字符串创建之后,字符的内容就不能再变动。1String有五个构造方法:String();/生成一个空串。String(charchars);/从字符数组chars生成一个字符串。String(charchars,intstartIndex,intnumChars);/从chars数组的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。String(Stringvalue);/利用一个已存在的字符串常量生成一个字符串。String(StringBufferbuffer);/利用一个已存在的StringBuffer对象进行初始化,生成一个字符串,.,25,2生成字符串,charchars1=b,c,d;charchars2=a,b,c,d,e;StringString1=newString(chars1);StringString2=newString(chars2,1,3);语句1、2定义了2个字符数组;语句3从字符数组chars1生成一个字符串String1,其值为“bcd”;语句4从字符数组chars2生成一个字符串String2,其值为“bcd”(即从字符数组chars2的下标为1的元素b开始提取共3个字符组成字符串)。StringS=newString();/生成一个空字符串,.,26,3创建对象,(1)Strings3=newString(bcd);(2)Strings4=newString(s3);(3)StringBufferst=newStringBuffer(bcd);(4)Strings5=newString(st);直接定义字符串:StringaString=“Thisisastring.”;StringaString3=aString;采取这种方式定义的aString3和aString指向同一对象,即字符串“Thisisastring.”。采用new定义字符串:StringaString4=newString(aString);这样写法将创建一个新的对象实体,其内容和aString一模一样。因此aString4所引用的字符串内容虽然和aString相同,但是,实际上却指向不同的对象实体。,.,27,4String类处理字符串的方法,字符串的合并:用操作符+实现比较两个字符串的前缀或后缀是否相等的方法startsWith(StringPrefix);/判断当前字符串是否是Prefix的前缀;startsWith(StringPrefix,inttoffset);/判断当前字符串的子串是否与Prefix相同;endsWith(Stringsuffix);/判断当前字符串是否是Prefix的后缀。Strings1=“appletree”;s1.startsWith(“apple”);s1.startsWith(“tree”,5);s1.endsWith(“tree”);s1.endsWith(“Tree”);,false,.,28,indexOf(charch)/在当前字符串中检索指定字符首次出现的位置。indexOf(charch,intfromIndex)/在当前字符串中从指定位置开始检索指定字符首次出现的位置用indexOf方法来检索指定的字符串。检索方法的返回值均为字符所在位置的序号或所检索的字符串首字符所在位置的序号,如没有检索到,则返回值为-1。比如:Strings1=“WearestudingJava.”;s1.indexOf(a);s1.indexOf(a,5);s1.indexOf(“are”,1);方法lastIndexOf(charch)是在指定字符串中检索某个指定字符最后出现的位置,用法和indexOf类似。,字符串检索的方法,.,29,例:String类的toCharArray方法的使用。classtoCharArraypublicstaticvoidmain(Stringargs)Strings1=Welikeapple.;chars2=s1.toCharArray();System.out.println(String.valueOf(s2,8,5);程序说明:第3行定义了一个字符串s1;第4行使用toCharArray方法将字符串s1转换为字符数组s2;第5行使用valueOf方法将字符数组s2中的第8个字符开始的5个字符即“apple”取出并打印输出。,将字符串转换成字符数组,结果为:apple,.,30,6.2.2StringBuffer类,StringBuffer类用于处理可变的字符串,提供修改字符串的方法。生成StringBuffer对象后,可通过调用toString()方法将其转换为String对象。StringBuffer有三个构造方法:StringBuffer();StringBuffer(intlength);StringBuffer(Stringstr);示例:StringBuffers0=newStringBuffer();StringBuffers1=newStringBuffer(512);StringBuffers2=newStringBuffer(“Happynewyear!”);,.,31,StringBuffer提供的方法,实现对字符串的修改,包括字符替换、插入字符、在末尾添加一个子串等。原因就是它使用了缓冲区。从StringBuffer类创建的对象都分配比给定字符串还多16个字节长度的缓冲区。StringBuffer类提供了方法来检测和获得缓冲区容量,在对字符修改过程中,如果缓冲区不够用,那么,系统会自动扩大缓冲区。,.,32,StringBuffer提供的主要方法:,字符设置和替换setCharAt(intindex,charch);此方法将指定的字符ch放到index指出的位置。例:StringBuffers=newStringBuffer(“stadents”);s.setCharAt(2,u);上述语句将字符串s中第2个字符a替换为u。字符的插入insert(intoffset,charch);insert方法用来在字符串的指定位置插入字符ch。,.,33,例6-4:StringBuffer的insert方法的使用1,publicclassMyStringpublicstaticvoidmain(Stringarg)Strings1=Wecome;StringBuffersb1=newStringBuffer(s1);sb1.insert(2,l);System.out.println(sb1);程序结果:打印“Welcome”。,.,34,StringBuffer的insert方法的使用2,insert方法还允许插入字符串、布尔量、数组和各种类型的数据,甚至插入一个对象。即按照入口参数的不同,StringBuffer提供了以下insert方法:insert(intoffset,charc);insert(intoffset,booleanb);insert(intoffset,charstr);insert(intoffset,doubled);insert(intoffset,floatf);insert(intoffset,inti);insert(intoffset,longl);insert(intoffset,Objectobj);insert(intoffset,Stringstr);,.,35,例6-5:StringBuffer的insert方法实现多种插入,publicclassStringModifypublicstaticvoidmain(Stringstr)StringBuffers=newStringBuffer(eacher!);booleanb=true;charc=T;doubled=3.14159;chare=,;charf=W,e,l,c,o,m,e,!;charg=!;System.out.println(insertachar:+s.insert(0,c);s.insert(0,e);System.out.println(insertadouble:+s.insert(0,d);s.insert(0,g);System.out.println(insertaArray:+s.insert(0,f);,insertachar:Teacher!insertadouble:3.14159,Teacher!insertaArray:Welcome!3.14159,Teacher!,在第0个位置,.,36,用append方法在字符串末尾添加内容,随着入口参数的不同,append方法可以用来添加字符串、各种类型的数据和数组等:append(booleanb);append(charc);append(charstr);append(charstr,intoffset,intlen);append(doubled);append(floatf);append(inti);append(longl);append(Objectobj);append(Stringstr);,.,37,classStringAppendpublicstaticvoidmain(Stringstr)StringBuffers=newStringBuffer(students);booleanb=true;charc=,;chard=t,h,i,s,M,i,s,M;System.out.println(appendachar:+s.append(c);System.out.println(appendaarray:+s.append(d);System.out.println(appendaboolean:+s.append(b);,例6-6:StringBuffer的append方法使用,程序运行结果:Appendachar:students,Appendachar:students,thisisAppendachar:students,thisistrue,.,38,toString()方法将可变字符串转化为不变字符串,下面的程序段中用了append方法和toString方法,将字符串修改后转化为字符串常量。charc=e;StringBuffers=newStringBuffer(Wear);s.append(c);s.append(students.);s.toString();结果:S成为字符串常量,其值为Wearestudent,.,39,StringBuffer类提供了length()方法检查缓冲区中字符串的长度,用charAt(intindex)方法得到入口参数所指位置的字符用capacity()方法获取缓冲区长度。publicclassMyStringpublicstaticvoidmain(Stringargs)Strings1=Ilikeapple.;StringBuffersb1=newStringBuffer(s1);System.out.println(sb1.length();System.out.println(sb1.capacity();程序说明:由于s1字符串共含13个字符,所以,第4行语句将s1送到字符串缓冲区sb1后,由第5行打印语句打出的字符串长度为13。实际上,sb1缓冲区长度为13+16=29,因为用new关键字创建对象时,为其分配的缓冲区长度比实际字符数多16个字符长度,结果:1329,.,40,例6-7:StringBuffer的length、capacity、charAt方法使用,publicclassMyStringpublicstaticvoidmain(Stringargs)Strings1=beautiful;StringBuffersb1=newStringBuffer(s1);System.out.println(第四个字符为:+sb1.charAt(4);/取出对象第4个字符System.out.println(length=+sb1.length();/返回对象的当前长度System.out.println(capacity:+sb1.capacity();/返回对象的整个容量,结果:第四个字符为:tlength=9capacity:25,.,41,6.2.3StringTokenizer,作用:对字符串的解析和分割例6-8StringTokenizerimportjava.util.StringTokenizer;publicclassStringTokenizerDemopublicstaticvoidmain(Stringargs)Strings=demoofStringTokenizer;StringTokenizertokenizer=newStringTokenizer(s,);while(tokenizer.hasMoreTokens()System.out.println(tokenizer.nextToken();,demoofStringTokenizer,.,42,6.3日期和时间,6.3.1日期类Date构造方法Date()/构造一个系统时间的Data实例Date(longdate)/构造指定时间的Data实例方法getTime()/获取自1970.1.1零时至当前系统时刻的微秒数setTime()/设置新的时间intgetDate()/获取系统当前日期after(Date)/比较是否迟于参数指定的日期brfore(Date)/比较是否早于参数指定的日期,.,43,6.3.2工具类库:Calendar,Calendar(表示日期和时间)getInstance():得到表示当前时间的实例get(int):获取相应信息,如get(Calendar.YEAR)set(int,int):如set(Calendar.YEAR,1999)set(year,month,date):set用来设置信息Calendar.getTime():得到当前时间的Date对象GregorianCalendar有不同的构造方法,用来创建实例。如:GregorianCalender(year,month,date,),.,44,日期类Calendar,抽象类,在Date对象和一组整数域之间进行转换:YEAR,MONTH,DAY,HOUR,Calendarc=Calendar.getInstance();in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论