Unit4-Java数组、字符串与常用类.ppt

上传人:sh****n 文档编号:11550129 上传时间:2020-04-28 格式:PPT 页数:50 大小:337KB
返回 下载 相关 举报
Unit4-Java数组、字符串与常用类.ppt_第1页
第1页 / 共50页
Unit4-Java数组、字符串与常用类.ppt_第2页
第2页 / 共50页
Unit4-Java数组、字符串与常用类.ppt_第3页
第3页 / 共50页
点击查看更多>>
资源描述
1,Unit4-Java数组、字符串与常用类,常州信息职业技术学院(CCIT)软件学院,CCIT软件学院,2,本章内容,Unit4-Java数组、字符串与常用类Java.lang包类Object,System数据类型类(包装类)类Math,Class类String,StringBuffer数组java.util包类Date,Calendar,Vector集合Set,List,Iterator,Array,Arraylist,CCIT软件学院,3,Java类库,Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(ApplicationProgramInterface),它可以帮助开发者方便、快捷地开发Java程序。这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。Java的类库大部分是由它的发明者SUN公司提供的,这些类库称为基础类库(JFC)。API应用程序编程接口面向过程语言函数库(子程序包)面向对象语言类库,CCIT软件学院,4,Java类库,类库的结构java.lang语言基础类库(System、Math、Thread、基本数据类型类)java.utilJava的工具类库(向量、栈、日期)java.ioJava的标准输入输出类库java.applet用于实现JavaApplet小程序的类库java.awt用于构建图形用户界面的类库java.awt.event界面用户交互控制和事件响应类库Java的用于实现网络功能的类库使用JDKDocument查看类库,CCIT软件学院,5,语言基础类库-Object类,Java程序中所有类的直接或间接父类,也是类库中所有类的的父类,所有的其他类都是从Object类派生。构造方法:Object()一般方法:Objectclone()生成当前对象的一个拷贝。booleanequals(Objectobj)比较两个对象是否相等,即是否包含相同信息。ClassgetClass()获取当前对象所属的类信息。StringtoString()用来返回当前对象本身的有关信息。protectedvoidfinalize()当垃圾收集器确定对象上没有其他的引用时,调用对象上的垃圾收集器。Object类上的此方法不执行任何特定行为,仅简单返回,其子类会覆盖此方法。,CCIT软件学院,6,语言基础类库:System类,System是一个功能强大的类,它提供了标准输入输出、运行时的系统信息等工具,但不能创建System类的对象,它所有的属性和方法都是静态(static)的,引用时应以System为前缀.系统功能类获取系统标准输入/输出/错误输出System.in(对应于键盘输入或用户指定输入源)System.out(对应于显示屏或用户指定的输出源)System.err(对应于显示屏或用户指定的输出源)获取系统信息System.currentTimeMillis()执行系统操作System.exit(0);System.gc();,CCIT软件学院,7,System类,属性publicstaticInputStreaminpublicstaticPrintStreamoutpublicstaticPrintStreamerr获取系统信息、完成系统操作的方法publicstaticlongcurrentTimeMillis();获取自1970年1月1日零时至当前系统时刻的微秒数publicstaticvoidexit(intstatus);强制Java虚拟机退出运行状态,并把状态信息status返回给运行虚拟机的操作系统。System.exit(n);n非0描述非正常中断.publicstaticvoidgc();强制调用Java虚拟机的垃圾回收功能。,CCIT软件学院,8,示例:System类,System.in输入charc=System.in.read();System.out.println(c);,CCIT软件学院,9,语言基础类库-Class类,Class类封装了对一个对象的描述。在一个对象运行期间,相应的Class对象不改变Class类的实例代表一个正在运行的Java应用程序的类或接口,数组以及Java的基本数据类型(boolean,byte,char,short,int,long,float和double)和关键字void都是由Class对象来表达Class类没有公共的构造器,由JVM自动构造,Object是万类之源,Class是类的运行时表示,CCIT软件学院,10,语言基础类库-Class类,Java运行时系统会对所有的对象进行类型识别publicfinalClassextendsObject一般方法:StringgetName()返回类名。FieldgetFields()返回类的public域对象。MethodgetMethods()返回类的public方法对象。PackagegetPackage()返回该类的包。Field类StringgetName()取域名Method类StringgetName()取方法名Package类StringgetName(),CCIT软件学院,11,语言基础类库:数据类型类,基本数据类型vs.数据类型类booleanvsBoolean,charvsCharacter等数据类型类规定了数据类型的最大值MAX_VALUE、最小值MIN_VALUE构造函数:如newInteger(10);完成不同数据类型间转换,注意不同的数据类使用的方法会有不同。Double.toString(0.08)、Integer.parseInt(“123”)、Double.ValueOf(“0.08”).intValue()等,见JDKDoc,CCIT软件学院,12,Wrapper(包装)类,CCIT软件学院,13,Integer,属性staticintMAX_VALUE返回int型数据的最大值staticintMIN_VALUE返回int型数据的最小值构造方法Integer(intvalue)Integer(Strings)方法intintValue()doubledoubleValue()longlongValue()StringtoString()staticStringtoString(inti)staticintparseInt(Strings)staticintparseInt(Strings,intradix)throwsNumberFormatExceptionstaticIntegervalueOf(Strings)valueOf(inti)valueOf(Strings,intradix)staticintparseInt(Strings),CCIT软件学院,14,类型转换利用类/对象方法,利用类方法(静态方法)Integer.parseInt(“23”)Integer.parseInt(23,16)Integer.parseInt(110,2)Integer.parseInt(110,8)Integer.toString(23)Double.parseDouble(“12.3”)Double.toString(12.3)利用对象方法Doubled;Strings;/声明d=newDouble(12.3);/创建s=d.toString();Double.valueOf(“12.3”).doubleValue();/返回,CCIT软件学院,15,语言基础类库:Math类,Math类用来完成常用的数学运算数学常量:E,PI数学运算:(一般运算都以double进行)Math.abs(-8.09);Math.exp(5.7);Math.random();Math.sqrt(9.08);Math.pow(2,3);/乘方Math.round(99.6);均为static,使用时无需创建实例Math.method(variable);,CCIT软件学院,16,数学运算的Math类,属性publicfinalstaticdoubleE;/数学常量epublicfinalstaticdoublePI;/圆周率常量方法(均为静态方法publicstatic),CCIT软件学院,17,数学运算的Math类,CCIT软件学院,18,示例:Math类,publicclassMathMethodpublicstaticvoidmain(Stringargs)System.out.println(Math.abs(-23.7)=+Math.abs(-23.7);System.out.println(Math.abs(-1059)=+Math.abs(-1059);System.out.println(Math.ceil(23.7)=+Math.ceil(23.7);System.out.println(Math.floor(23.7)=+Math.floor(23.7);System.out.println(Math.exp(2)=+Math.exp(2);System.out.println(Math.log(Math.E)=+Math.log(Math.E);System.out.println(Math.pow(2,15)=+Math.pow(2,15);System.out.println(Math.sqrt(625)=+Math.sqrt(625);System.out.println(Math.max(6.25,10.35)=+Math.max(6.25,10.35);System.out.println(Math.mix(6.25,10.35)=+Math.min(6.25,10.35);,CCIT软件学院,19,JAVA中的字符串,Java把字符串(常量或变量)作为包java.lang中String类和StringBuffer类的对象来分别处理字符串常量和字符串变量。由于使用频繁,有时也被视为基本类型遇到双引号自动创建String类的对象提供字符串运算符,字符串的连接:+定长字符串:String类(效率较高)不能更改,可用于比较、搜索之类的操作可变字符串:StringBuffer类(使用灵活)可追加、插入、修改,但内存管理复杂,CCIT软件学院,20,字符串类-String,Java语言将字符串作为对象来处理,每一个字符串常量是字符串类String的一个实例。构造方法String()、String(String)、String(charchars)创建字符串Strings=newString();/生成一个空字符串Strings=newString(“abc”);chardata=a,b,c;Strings=newString(data);Strings=“abc”;/采用字符串直接定义获得内存空间Object的方法toString()实现其他对象向字符串的转换,CCIT软件学院,21,字符串类-String,方法intlength()/返回字符串长度例:“Java与面向对象程序设计”.length()的值为13charcharAt(intindex)/返回指定位置的字符例:Java与面向对象程序设计.charAt(2)intcompareTo(Strings2)/按字母序进行字符串比较booleanequals(Objectobj)/判断字符串相等(区分大小写)booleanequalsIgnoreCase(Strings2)/(不区分大小写)StringtoLowerCase()/将字符串所有大写字母转换为小写StringtoUpperCase()/将字符串所有小写字母转换为大写valueOf(Objectobj)/将某个对象的实例转换成字符串,CCIT软件学院,22,字符串类-String,Stringsubstring(intbeginIndex)/取子串Stringsubstring(intbeginIndex,intendIndex)intindexOf(Stringstr)/返回str在当前串中开始位置intindexOf(Stringstr,intfromIndex)intlastIndexOf(Stringstr,intfromIndex)/.booleanstartsWith(Stringprefix)/判断该字符串是否以prefix为前缀。booleanendsWith(Stringsuffix)/判断该字符串是否以suffix为后缀。chartoCharArray()/将字符串转为字符数组Stringconcat(Stringstr);/连接字符串replace(charoldChar,charnewChar)/字符替换,CCIT软件学院,23,字符串类StringBuffer,String类对象表示的是不可变的字符串,如果需要修改String对象所表示的内容,必须重新创建一个对象:Stringstr=Peter;str=str+当修改操作频繁,或字符串的值很大时,会额外分配大量内存因此,Java语言引入了一个StringBuffer类,用来表示内容可以扩充和修改字符串对象,CCIT软件学院,24,字符串类StringBuffer,StringBuffer类对象是可变的字符串,有改变字符串内容和长度的若干方法,并且,StringBuffer在多线程中使用是安全的。构造方法StringBuffer()/创建一个空的StringBuffer对象StringBuffer(intlength)/设置初始容量StringBuffer(Strings)/利用已有字符串String对象来初始化注意,下面语句不能创建StringBuffer对象:StringBufferms=myStringbuffer;,CCIT软件学院,25,字符串类StringBuffer方法,StringtoString()将可变串变为不可变字符串intlength()得到当前StringBuffer的长度(字符数)intcapacity()得到当前StringBuffer的容量intindexOf(Stringstr)获取str在字串中的位置StringBufferappend(Stringstr)将str添加到StringBuffer中StringBufferdelete(intstart,intend)删除start和end间的字符StringBufferinsert(Stringstr,intindex)向StringBuffer插入字串StringBufferreplace(intstart,intend,Stringstr)用str代替start和end之间的字符voidsetCharAt(intindex,charch)设置位置index的字符为ch/这些方法一般都有重载,参数可以是单个字符(char),CCIT软件学院,26,字符串的赋值和加法,Java的字符串连接运算符+,例如:Stringstr=Hello,;str=str+Tom!;编译器自动将该语句解释为:Stringstr=newStringBuffer().append(Hello,).toString();str=str=newStringBuffer().append(Tom!).toString();,CCIT软件学院,27,字符串分析-StringTokenizer,将字符串分解成可被独立使用的单词StringTokenizer(Strings),使用默认的分隔符集合,即空格、换行、回车、Tab.StringTokenizer(Strings,Stringdelim)指定delim字符为分隔符使用:while(f.hasMoreTokens()/判断是否还有下一个串Strings=f.nextToken();/取一个字串intc=f.countTokens();/个数.,CCIT软件学院,28,CCIT软件学院,29,数组(Array),数组是一种特殊的对象数组用来组织一组类型相同的对象。数组中的成员通过下标来访问。数组的大小在创建数组实例时确定,而不是定义数组变量时。数组的大小一经确定将不在改变。在创建数组时,数组成员都被赋予初值。示例:intintArray;/定义变量时不指定大小intintArray;/两种定义方法都可以intArray=newint3;/创建数组实例时确定大小intArray0=3;/数组下标从0开始,CCIT软件学院,30,数组(Array),数组的长度不是在声明时指定,而是在创建时由所开辟的内存单元数目确定数组的创建(3步)数组的声明创建数组空间创建数组元素并初始化。若数组元素为基本数据类型,第三步可以省略;当数组元素为对象时,则必须对数组元素进行创建和初始化。一维数组定义intintArray;数组类对象引用说明(intArray)动态分配空间(newint5或数组初始化)intintArray=newint5;,CCIT软件学院,31,数组(Array),可以在声明数组的同时创建数组,例如:floatboy=newfloat10;用new为数组分配内存后,自动用数据类型的缺省值初始化所有的数组元素。整型-0,实型-0.0f或0.0d,字符型-0,类对象-null可以在声明数组的同时,为数组赋初值。例如:inta=1,2,3,4,5;Stringweeks=“Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”,”Sun”数组元素的访问格式为:数组名下标下标从0开始例如,以上定义的int型数组a的5个元素为a0,a1,a2,a3,a4数组创建后,可以对数组元素赋值,数组元素也可以参加表达式运算,如:a0=10;inti=a3+7;JAVA提供了获得数组长度的方法,数组名.length。例如:a.length得到数组a的长度5。,CCIT软件学院,32,课堂练习,CCIT软件学院,33,实用工具类库java.util,java.util包提供了一些实用的方法和数据结构提供日期(Date)类、日历(Calendar)类来产生和获取日期及时间提供随机数(Random)类产生各种类型的随机数提供了堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构,CCIT软件学院,34,java.util包-Date类,日期类中封装了有关日期和时间的信息,用户还可以通过调用相应的方法来获取系统时间或设置日期和时间在日期类中共定义了六种构造函数publicDate()publicDate(longdate)/date以毫秒为单位,从1970.1.10:0开始publicDate(Strings)publicDate(intyear,intmonth,intdate)publicDate(intyear,intmonth,intdate,inthrs,intmin)publicDate(intyear,intmonth,intdate,inthrs,intmin,intsec)参数说明year值:需设定的年份-1900,month(0-11),date(1-31),hrs(0-23),min,sec(0-59),CCIT软件学院,35,java.util包-Date类,Date类的方法publicstaticlongUTC(intyear,intmonth,intdate,inthrs,intmin,intsec)该方法利用给定参数计算UTC值。UTC是一种计时体制,与GMT(格林威治时间)的计时体制略有差别。UTC基于原子时钟的,而GMT基于天文观测的。计算机中一般位GMT计时体系。publicstaticlongparse(Strings)该方法将字符串s转换成一个long型的日期。s有一定的格式,一般为:(星期日年时间GMT+时区)。若不注明时区,则为本地时区。,CCIT软件学院,36,java.util包-Date类,publicvoidsetMonth(intmonth)publicintgetMonth()这2个方法分别为设定和获取月份值(0-11)publicStringtoString()publicStringtoLocalString()publicStringtoGMTString()将给定日期对象转换成不同格式的字符串。publicintgetTimezoneOffset()该方法用于获取日期对象的时区偏移量booleanafter(Date)/比较所包含的日期是否迟于参数指定的日期booleanbefore(Date)LonggetTime()VoidsetTime(long),CCIT软件学院,37,示例:Date类,importjava.util.Date;publicclassDateTestpublicstaticvoidmain(Stringargs)DatecurDate=newDate();System.out.println(CurrentDate=+curDate);DatenewDate=newDate(10000);System.out.println(Newdate=+newDate);System.out.println(curDate.after(newDate);System.out.println(curDate.before(newDate);System.out.println(MSsince1970-1-1:+curDate.getTime();,CCIT软件学院,38,java.util包-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,),CCIT软件学院,39,java.util包-GregorianCalendar,GregorianCalendar是Calendar的子类,它实现了世界上普遍使用的公历系统(阳历)类GregorianCalendar提供了七种构造函数:GregorianCalendar()GregorianCalendar(TimeZonezone)GregorianCalendar(LocaleaLoc)GregorianCalendar(TimeZonezone,LocaleaLoc)GregorianCalendar(intyear,intmonth,intdate)GregorianCalendar(intyear,intmonth,intdate,inthour,intminute)GregorianCalendar(intyear,intmonth,intdate,inthour,intminute,intsecond)用给定的日期和时间创建一个GregorianCalendar对象TimeZone是java.util包中的一个类,其中封装了有关时区的信息。每个时区对应一组ID,类TimeZone提供方法完成时区与对应ID两者之间的转换。,CCIT软件学院,40,示例:Calendar,GregorianCalendar,importjava.util.*;publicclassCalendarTestpublicstaticvoidmain(Stringargs)StringarrW=日,一,二,三,四,五,六;System.out.println(当前时间:+Calendar.getInstance().getTime();Dated1=newGregorianCalendar(2005,8,1,1,1,00).getTime();Dated2=newDate();longdiff=d2.getTime()-d1.getTime();System.out.println(d1+与+d2+差距天数=+diff/(1000L*60*60*24);Calendarc=Calendar.getInstance();System.out.println(-当前时间-);System.out.println(年:月:日+c.get(Calendar.YEAR)+:+(c.get(Calendar.MONTH)+1)+:+c.get(Calendar.DATE);System.out.println(时:分:秒+c.get(Calendar.HOUR)+:+c.get(Calendar.MINUTE)+:+c.get(Calendar.SECOND)+(c.get(Calendar.AM_PM)=1?PM:AM);System.out.println(星期+arrWc.get(Calendar.DAY_OF_WEEK)-1);,CCIT软件学院,41,java.util包-向量类Vector,java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能Vector是Java语言为解决数组长度和元素类型不能改变而引入的工具类,用来表示列表数据结构。其元素可以是任何类型的对象(不能是简单数据类型,如果要存放,可以用数据类型类)向量类提供了三种构造方法:publicvector()publicvector(intinitialcapacity,intcapacityIncrement)publicvector(intinitialcapacity),适合于如下的情况需要处理的对象数目不定序列中元素都是对象,而不是基本数据类型的量需要做频繁的元素插入和删除需要定位序列中的对象或其他查找操作,CCIT软件学院,42,java.util包-向量类Vector,事实上,灵活使用数组也可完成向量类的功能,但向量类中提供的大量方法大大方便了用户的使用。用第一种构造方法,系统会自动对向量对象进行管理。若使用后两种方法,则系统将根据参数initialcapacity设定向量对象的容量(即向量对象可存储数据的大小),当真正存放的数据个数超过容量时,系统会扩充向量对象的存储容量。参数capacityIncrement给定了每次扩充的扩充值。当capacityIncrement为0时,则每次扩充一倍。利用这个功能可以优化存储。创建了一个向量类的对象后,可以往其中随意地插入不同的类的对象,既不需要顾及类型也不需要预先选定向量的容量,并可方便地进行查找。对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用向量类。,CCIT软件学院,43,向量类Vector的方法,插入功能publicfinalsynchronizedvoidaddElement(Objectobj)将obj插入向量的尾部。obj可以是任何类的对象。对同一个向量对象,可在其中插入不同类的对象。但插入的应是对象而不是数值,所以插入数值时要注意将数值转换成相应的对象。例要插入一个整数1时,不要直接调用v1.addElement(1),正确方法为:Vectorv1=newVector();Integerint1=newInteger(1);v1.addElement(int1);/也可使用add()方法publicfinalsynchronizedvoidsetElementAt(Objectobj,intindex)将index处的对象设成obj,原来的对象将被覆盖publicfinalsynchronizedvoidinsertElementAt(Objectobj,intindex)在index指定的位置插入obj,原来的对象以及此后的对象依次往后顺延,CCIT软件学院,44,向量类Vector的方法,删除功能publicfinalsynchronizedvoidremoveElement(Objectobj)从向量中删除obj。若有多个存在,则从向量头开始试,删除找到的第一与obj相同的向量成员publicfinalsynchronizedvoidremoveAllElement()删除向量中所有的对象publicfinalsynchronizedvoidremoveElementAt(intindex)删除index所指的地方的对象,CCIT软件学院,45,向量类Vector的方法,查询搜索功能publicfinalintindexOf(Objectobj)从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1publicfinalsynchronizedintindexOf(Objectobj,intindex)从index所表示的下标处开始搜索objpublicfinalintlastIndexOf(Objectobj)从向量尾部开始逆向搜索objpublicfinalsynchronizedintlastIndexOf(Objectobj,intindex)从index所表示的下标处由尾到头逆向搜索objpublicfinalsynchronizedObjectfirstElement()获取向量对象中的首个objpublicfinalsynchronizedObjectlastElement()获取向量对象中的最后一个obj,CCIT软件学院,46,向量类Vector的方法,其他方法:取出向量中的指定元素Objectget(intindex)测试对象在向量中是否存在booleancontains(Objectobj)返回指定位置的元素ObjectelementAt(intindex)由于返回的是Object类型的对象,在使用前要进行强制类型转换,将返回的对象引用转换成Object类的某个具体子类的对象。Stringstr=(String)MyVector.elementAt(0);返回一个包含向量中所有元素的对象数组ObjecttoArray()清空向量(删除所有元素)clear()测试向量是否为空booleanisEmpty()当前向量元素数量intsize()向量当前容量intcapacity(),CCIT软件学院,47,示例:向量类Vector,importjava.util.*;classVectorTestpublicstaticvoidmain(Stringargs)Vectorvec=newVector();Datedate=newDate();vec.add(newInteger(1);vec.add(newFloat(3.45f);vec.add(newDouble(1.2);vec.add(date);System.out.println(Size:+vec.size();Integern1=(Integer)vec.get(0);System.out.println(向量第1个元素:+n1.intValue();Floatn2=(Float)vec.get(1);System.out.println(向量第2个元素:+n2.floatValue();Doublen3=(Double)vec.get(2);System.out.println(向量第3个元素:+n3.doubleValue();Daten4=(Date)vec.lastElement();System.out.println(向量第4个元素:+n4.toString();if(vec.contains(date)System.out.println(存在date);,CCIT软件学院,48,课堂练习,CCIT软件学院,49,下一节课的内容,Unit5-异常(Exception)处理异常机制简介用异常机制处理错误系统预定义异常对象用户自定义异常对象捕获异常抛出异常异常的分类须查异常与不须查异常Java异常的使用异常处理的优点,CCIT软件学院,50,下课!,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!