版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章基础类库和工具类库1第6章基础类库和工具类库引言我们很少见到一个家具厂要自己种树、伐木来提供木材,也很少见五金厂自己通过冶炼来提供钢材,但在以往的程序设计中,这种一切从头开始的做法却是常见的。这种做法会带来大量的重复工作,解决这一问题的方法是软件重用。面向对象技术是迄今为止提高软件可重用性的最有效途径,其中类和类的继承机制为提高程序的可重用性提供了强有力的支持。Java有一个功能强大的资源库,通过类和类的继承机制将资源库中的资源组织起来,Java将功能相关的类组织成包,使程序员可以很方便地使用资源库。Java资源库中类的继承层次和包的组织呈树型结构,Java资源库的这种组织方式使程序员进行Java编程时有“背靠大树好乘凉”的感觉。2第6章基础类库和工具类库6.1Java基础类Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(ApplicationProgramInterface),它可以帮助开发者方便、快捷地开发Java程序。这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。
Java的类库大部分是由它的发明者——SUN公司提供的,这些类库称为基础类库(JFC)。API应用程序编程接口面向过程语言–函数库(子程序包)面向对象语言–类库3第6章基础类库和工具类库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查看类库4第6章基础类库和工具类库6.1.2语言基础类库-Object类Java程序中所有类的直接或间接父类,也是类库中所有类的的父类,所有的其他类都是从Object类派生。构造方法:Object()一般方法:方法说明equals()比较两个对象是否相同,结果为一布尔值getClass()
返回一个对象在运行时所对应的类的表示toString()返回描述当前对象的字符串信息Clone()生成并返回当前对象的一个拷贝finalize()定义回收当前对象时所需完成的清理工作5第6章基础类库和工具类库例6-1Object中定义的方法的使用publicclassBasicObjectDemo{ publicstaticvoidmain(String[]args){ 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()); }}classA{}classB{}falsetrueA@35ce366第6章基础类库和工具类库6.1.3语言基础类库:数据类型类Java的数据类型及其对应的基本数据类型基本数据类型数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean在Java中,数据类型包装类用于封装基本数据类型的有关信息和操作。数据类型包装类是由多个类组成的一个集合,每种基本数据类型均存在相应的对象封装类7第6章基础类库和工具类库1.Character类构造方法:publicCharacher(charvalue)例:Characherch=newCharacher('a');常用方法及说明方法说明isLowerCase(charch)判断ch是否为小写isUpperCase(charch)判断ch是否为大写isDigit(charch)判断ch是否为数字isLetter(charch)判断ch是否为字母toLowerCase(charch)返回小写toUpperCase(charch)返回大写Digit(charch,intradix)根据radix指定的进制,返回ch所对应的值8第6章基础类库和工具类库2.Integer类构造方法:publicInteger(intvalue) publicInteger(Strngs)throwsNumberFormatException
例:Integera=newInteger(1); Integera1=newInteger("1");方法说明parseInt(Strings)将s转换为带符号十进制整数valueOf(Strings)将s转换为一个Integer对象,该对象对应的int数值与字符串表示的数值一致类变量说明MAX_VALUE规定了int类型的最大值MIN_VALUE规定了int类型的最小值常用类变量及说明常用方法及说明inti=Integer.parseInt(“888”);intj=Integer.valueOf(“111”).intValue();字符串与整形数据的转化9第6章基础类库和工具类库数据类型类IntegerInteger类的公用属性方法。10第6章基础类库和工具类库数据类型类IntegerInteger类的公用属性常用方法。可进行进制转换11第6章基础类库和工具类库例子:2进制转换!publicclassIntegerApp{publicstaticvoidmain(String[]arg){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);}}12第6章基础类库和工具类库运行结果:十进制数1234对应的二进制数是:10011010010十进制数1234对应的十六进制数是:4d2Integer对应的基本类型是:intInteger最大值为:2147483647Integer最小值为:-214748364813第6章基础类库和工具类库6.1.4语言基础类库:System类java.io包中提供了多种输入/输出流,但是Java把最基本的输入/输出流类放在了java.lang.System类中。这个类提供了一个很重要的内容——标准输入/输出流。标准输入流用于从标准输入设备输入数据;标准输出流用于向标准输出设备输出数据。System类在声明时使用了final关键字,而且该类中的所有方法和变量都是静态的,因此该类不能被实例化或派生子类。要使用类变量。如:System.out。调用类的方法。如:System.getProperty(参数)14第6章基础类库和工具类库System类中保存了重要的全局函数和变量:System.err是标准错误输出流,用于输出错误信息。System.in是标准输入流,其read方法提供了一种简便的数据读取手段。这个方法可读取用户在键盘上输入的字符。System.out是标准输出流,它是java.io包中PrintStream类的一个对象,其println方法用于输出数据。System.out.println(“HelloWorld!”)System.out.printlnSystem.out.print15第6章基础类库和工具类库例6-2:System类
classUserNameTest{publicstaticvoidmain(String[]args){ Stringname; name=System.getProperty("");
//调用getProperty方法,获取机器的用户名
System.out.println("用户名:"+name);
//屏幕显示用户名
}}16第6章基础类库和工具类库System类属性publicstaticInputStreaminpublicstaticPrintStreamoutpublicstaticPrintStreamerr获取系统信息、完成系统操作的方法publicstaticlongcurrentTimeMillis();
获取自1970年1月1日零时至当前系统时刻的微秒数
972370687290publicstaticvoidexit(intstatus);
强制Java虚拟机退出运行状态,并把状态信息status
返回给运行虚拟机的操作系统。System.exit(0);publicstaticvoidgc();
强制调用Java虚拟机的垃圾回收功能。17第6章基础类库和工具类库6.1.5语言基础类库:Math类java.lang.Math类是标准的数学类,封装了一些数学函数和常量。在这个类中,数的大小范围跟具体的操作平台有关。与System类相似,java.lang.Math类也不能被子类化或实例化,因为它的所有方法和变量也都是静态的。二个类变量:类变量说明E最接近自然对数的底(e)的double值PI最接近圆周率()的double值18第6章基础类库和工具类库三角函数下面的三个方法接受一个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的角度值。19第6章基础类库和工具类库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的整型值20第6章基础类库和工具类库多态方法:abs、min和max下面是几个应用于int、long、float和double类型的多态方法:abs(a)返回a的绝对值。max(a,b)返回a和b的最大值。min(a,b)返回a和b的最小值。21第6章基础类库和工具类库例6-3:math类的方法使用
importjava.lang.*;importjava.io.*;publicclassMathDemo{publicstaticvoidmain(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的正弦值22第6章基础类库和工具类库例6-3:math类的方法使用try{doublerand=Math.random();doublerand2=-Math.random();System.out.println("power("+rand+","+rand2+")="+Math.pow(rand,rand2));}//求幂
catch(ArithmeticExceptionex){System.out.println("ArithmeticExceptionoccured!");}}}
Math.E=2.7045Math.PI=3.1493ceil(E)=3.0floor(E)=2.0rint(PI)=3.0lnE=1.0sin(pi/4)=0.75475power(0.9726179323562354,-0.12166141769193639)=1.1202223第6章基础类库和工具类库6.2字符串相关类6.2.1String类String类的特性是:字符串创建之后,字符的内容就不能再变动。1String有五个构造方法:String();//生成一个空串。String(charchars[]);//从字符数组chars[]生成一个字符串。String(charchars[],intstartIndex,intnumChars);//从chars[]数组的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。String(Stringvalue);//利用一个已存在的字符串常量生成一个字符串。String(StringBufferbuffer);//利用一个已存在的StringBuffer对象进行初始化,生成一个字符串24第6章基础类库和工具类库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();//生成一个空字符串25第6章基础类库和工具类库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相同,但是,实际上却指向不同的对象实体。26第6章基础类库和工具类库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”);truefalse27第6章基础类库和工具类库⑴indexOf(charch)//在当前字符串中检索指定字符首次出现的位置。⑵indexOf(charch,intfromIndex)//在当前字符串中从指定位置开始检索指定字符首次出现的位置用indexOf方法来检索指定的字符串。检索方法的返回值均为字符所在位置的序号或所检索的字符串首字符所在位置的序号,如没有检索到,则返回值为-1。比如:Strings1=“WearestudingJava.”;s1.indexOf(’a’);s1.indexOf(’a’,5);s1.indexOf(“are”,1);方法lastIndexOf(charch)是在指定字符串中检索某个指定字符最后出现的位置,用法和indexOf类似。字符串检索的方法316328第6章基础类库和工具类库例:String类的toCharArray方法的使用。
classtoCharArray{publicstaticvoidmain(Stringargs[]){Strings1="Welikeapple.";char[]s2=s1.toCharArray();System.out.println(String.valueOf(s2,8,5));}}程序说明:第3行定义了一个字符串s1;第4行使用toCharArray方法将字符串s1转换为字符数组s2[];第5行使用valueOf方法将字符数组s2中的第8个字符开始的5个字符即“apple”取出并打印输出。
将字符串转换成字符数组
结果为:apple29第6章基础类库和工具类库6.2.2StringBuffer类
StringBuffer类用于处理可变的字符串,提供修改字符串的方法。生成StringBuffer对象后,可通过调用toString()方法将其转换为String对象。StringBuffer有三个构造方法:⑴
StringBuffer();⑵
StringBuffer(intlength);⑶
StringBuffer(Stringstr);示例:⑴
StringBuffers0=newStringBuffer();⑵StringBuffers1=newStringBuffer(512);⑶StringBuffers2=newStringBuffer(“Happynewyear!”);缓冲区尺寸byte16lengthStr长度+1630第6章基础类库和工具类库StringBuffer提供的方法实现对字符串的修改,包括字符替换、插入字符、在末尾添加一个子串等。原因就是它使用了缓冲区。从StringBuffer类创建的对象都分配比给定字符串还多16个字节长度的缓冲区。StringBuffer类提供了方法来检测和获得缓冲区容量,在对字符修改过程中,如果缓冲区不够用,那么,系统会自动扩大缓冲区。31第6章基础类库和工具类库StringBuffer提供的主要方法:
字符设置和替换setCharAt(intindex,charch);此方法将指定的字符ch放到index指出的位置。例:StringBuffers=newStringBuffer(“stadents”);s.setCharAt(2,‘u’);上述语句将字符串s中第2个字符‘a’替换为‘u’。字符的插入insert(intoffset,charch);insert方法用来在字符串的指定位置插入字符ch。32第6章基础类库和工具类库例6-4:StringBuffer的insert方法的使用1
publicclassMyString{publicstaticvoidmain(Stringarg[]){Strings1="Wecome";StringBuffersb1=newStringBuffer(s1);sb1.insert(2,'l');System.out.println(sb1);}}程序结果:打印“Welcome”。33第6章基础类库和工具类库StringBuffer的insert方法的使用2insert方法还允许插入字符串、布尔量、数组和各种类型的数据,甚至插入一个对象。即按照入口参数的不同,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);
34第6章基础类库和工具类库例6-5:StringBuffer的insert方法实现多种插入
publicclassStringModify{publicstaticvoidmain(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个位置35第6章基础类库和工具类库用append方法在字符串末尾添加内容
随着入口参数的不同,append方法可以用来添加字符串、各种类型的数据和数组等:append(booleanb);append(charc);append(charstr[]);append(charstr[],intoffset,intlen);append(doubled);append(floatf);append(inti);append(longl);append(Objectobj);append(Stringstr);36第6章基础类库和工具类库classStringAppend{publicstaticvoidmain(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,thisistrue37第6章基础类库和工具类库toString
()方法将可变字符串转化为不变字符串下面的程序段中用了append方法和toString方法,将字符串修改后转化为字符串常量。charc='e';StringBuffers=newStringBuffer("Wear");s.append(c);s.append("students.");s.toString();结果:S成为字符串常量,其值为Wearestudent38第6章基础类库和工具类库StringBuffer类提供了length()方法检查缓冲区中字符串的长度用charAt
(intindex)方法得到入口参数所指位置的字符用capacity()方法获取缓冲区长度。
publicclassMyString{publicstaticvoidmain(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个字符长度结果:132939第6章基础类库和工具类库例6-7:StringBuffer的length、capacity、charAt方法使用
publicclassMyString{publicstaticvoidmain(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:2540第6章基础类库和工具类库6.2.3StringTokenizer作用:对字符串的解析和分割例6-8StringTokenizerimportjava.util.StringTokenizer;publicclassStringTokenizerDemo{ publicstaticvoidmain(String[]args){ Strings="demoofStringTokenizer"; StringTokenizertokenizer=newStringTokenizer(s,""); while(tokenizer.hasMoreTokens()){ System.out.println(tokenizer.nextToken()); } }}demoofStringTokenizer41第6章基础类库和工具类库6.3日期和时间6.3.1日期类—Date构造方法Date() //构造一个系统时间的Data实例 Date(longdate) //构造指定时间的Data实例方法getTime()//获取自1970.1.1零时至当前系统时刻的微秒数 setTime() //设置新的时间intgetDate() //获取系统当前日期 after(Date) //比较是否迟于参数指定的日期 brfore(Date) //比较是否早于参数指定的日期42第6章基础类库和工具类库6.3.2工具类库:CalendarCalendar(表示日期和时间)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,…)43第6章基础类库和工具类库日期类—Calendar抽象类,在Date对象和一组整数域之间进行转换:YEAR,MONTH,DAY,HOUR,…Calendarc=Calendar.getInstance();intc.get(Calendar.YEAR)intc.get(Calendar.MONTH)(1月为0)intc.get(Calendar.DATE)intc.get(Calendar.HOUR)intc.get(Calendar.MINUTE)intc.get(Calendar.SECOND)Datec.getTime()44第6章基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《十万个为什么》米伊林版阅读练习题2(含答案)
- 婚恋交友类商业计划书
- 2024年打工人生活洞察报告-千瓜数据-2024.08-18正式版
- 干细胞项目运营方案
- 想你的浪漫话语-最浪漫的表白话语
- 高中化学专题12 工艺流程综合题(解析版)
- 1.2离子反应-高一化学人教版(2019)必修一课时优化训练
- 柔性抗裂腻子粉项目节能评估报告模板
- 陕西省西安市秦汉中学2024-2025学年高三月考卷(六)物理试题含解析
- 陕西省定边县重点名校2025年初三第二学期期末质量检测试题数学试题试卷含解析
- 湘美版美术六年级(上册)6 秦陵兵马俑
- 统编版九年级上册语文第一单元整体教学设计
- 中小学阶段校外教育服务合同(2024年版)
- 2024年云南昆明禄劝县事业单位公开招聘工作人员55人历年(高频重点复习提升训练)共500题附带答案详解
- 2024版《安徽省安全生产条例》全文课件
- 2023年山东省临沂市兰山区兰山街道社区工作者招聘笔试题库及答案解析
- 新苏教版科学六年级上册全册教学课件
- 高一第一次月考试卷(数学)
- 化工设备管理及维护保养
- 2024年学生团干部技能大赛考试题库350题(含答案)
- 塑料包装市场分析及行业前景展望报告
评论
0/150
提交评论