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

上传人:小飞机 文档编号:6522439 上传时间:2023-11-08 格式:PPT 页数:50 大小:475.50KB
返回 下载 相关 举报
Unit4-Java数组、字符串与常用类.ppt_第1页
第1页 / 共50页
Unit4-Java数组、字符串与常用类.ppt_第2页
第2页 / 共50页
Unit4-Java数组、字符串与常用类.ppt_第3页
第3页 / 共50页
Unit4-Java数组、字符串与常用类.ppt_第4页
第4页 / 共50页
Unit4-Java数组、字符串与常用类.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《Unit4-Java数组、字符串与常用类.ppt》由会员分享,可在线阅读,更多相关《Unit4-Java数组、字符串与常用类.ppt(50页珍藏版)》请在三一办公上搜索。

1、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(Application Program Interface

2、),它可以帮助开发者方便、快捷地开发Java程序。这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。Java的类库大部分是由它的发明者SUN公司 提供的,这些类库称为基础类库(JFC)。API 应用程序编程接口面向过程语言 函数库(子程序包)面向对象语言 类库,CCIT软件学院*,4,Java类库,类库的结构java.lang 语言基础类库(System、Math、Thread、基本数据类型类)java.util Java的工具类库(向量、栈、日期)java.io Java的标准输入输出类库java.applet 用于实现Java Applet小程序的类

3、库java.awt 用于构建图形用户界面的类库 界面用户交互控制和事件响应类库 Java的用于实现网络功能的类库使用JDK Document查看类库,CCIT软件学院*,5,语言基础类库-Object类,Java程序中所有类的直接或间接父类,也是类库中所有类的的父类,所有的其他类都是从Object类派生。构造方法:Object()一般方法:Object clone()生成当前对象的一个拷贝。boolean equals(Object obj)比较两个对象是否相等,即是否包含相同信息。Class getClass()获取当前对象所属的类信息。String toString()用来返回当前对象本身

4、的有关信息。protected void finalize()当垃圾收集器确定对象上没有其他的引用时,调用对象上的垃圾收集器。Object类上的此方法不执行任何特定行为,仅简单返回,其子类会覆盖此方法。,CCIT软件学院*,6,语言基础类库:System类,System是一个功能强大的类,它提供了标准输入输出、运行时的系统信息等工具,但不能创建System类的对象,它所有的属性和方法都是静态(static)的,引用时应以System为前缀.系统功能类获取系统标准输入/输出/错误输出System.in(对应于键盘输入或用户指定输入源)System.out(对应于显示屏或用户指定的输出源)Syst

5、em.err(对应于显示屏或用户指定的输出源)获取系统信息 System.currentTimeMillis()执行系统操作System.exit(0);System.gc();,CCIT软件学院*,7,System类,属性public static InputStream in public static PrintStream outpublic static PrintStream err 获取系统信息、完成系统操作的方法public static long currentTimeMillis();获取自1970年1月1日零时至当前系统时刻的微秒数public static void e

6、xit(int status);强制Java虚拟机退出运行状态,并把状态信息status返回给运行虚拟机的操作系统。System.exit(n);n非0描述非正常中断.public static void gc();强制调用Java虚拟机的垃圾回收功能。,CCIT软件学院*,8,示例:System类,System.in输入char c=System.in.read();System.out.println(c);,CCIT软件学院*,9,语言基础类库-Class类,Class类封装了对一个对象的描述。在一个对象运行期间,相应的Class对象不改变Class类的实例代表一个正在运行的Java应用

7、程序的类或接口,数组以及Java的基本数据类型(boolean,byte,char,short,int,long,float和double)和关键字void都是由Class对象来表达Class类没有公共的构造器,由JVM自动构造,Object是万类之源,Class是类的运行时表示,CCIT软件学院*,10,语言基础类库-Class类,Java运行时系统会对所有的对象进行类型识别public final Class extends Object 一般方法:String getName()返回类名。Field getFields()返回类的public域对象。Method getMethods()

8、返回类的public方法对象。Package getPackage()返回该类的包。Field 类String getName()取域名Method 类 String getName()取方法名Package 类String getName(),CCIT软件学院*,11,语言基础类库:数据类型类,基本数据类型 vs.数据类型类boolean vs Boolean,char vs Character等数据类型类规定了数据类型的最大值MAX_VALUE、最小值MIN_VALUE构造函数:如new Integer(10);完成不同数据类型间转换,注意不同的数据类使用的方法会有不同。Double.to

9、String(0.08)、Integer.parseInt(“123”)、Double.ValueOf(“0.08”).intValue()等,见JDK Doc,CCIT软件学院*,12,Wrapper(包装)类,CCIT软件学院*,13,Integer,属性 staticint MAX_VALUE 返回int型数据的最大值staticint MIN_VALUE 返回int型数据的最小值构造方法Integer(int value)Integer(String s)方法int intValue()double doubleValue()long longValue()String toStrin

10、g()static String toString(int i)static int parseInt(String s)static int parseInt(String s,int radix)throws NumberFormatException static Integer valueOf(String s)valueOf(int i)valueOf(String s,int radix)static int parseInt(String s),CCIT软件学院*,14,类型转换利用类/对象方法,利用类方法(静态方法)Integer.parseInt(“23”)Integer.p

11、arseInt(23,16)Integer.parseInt(110,2)Integer.parseInt(110,8)Integer.toString(23)Double.parseDouble(“12.3”)Double.toString(12.3)利用对象方法 Double d;String s;/声明 d=new Double(12.3);/创建 s=d.toString();Double.valueOf(“12.3”).doubleValue();/返回,CCIT软件学院*,15,语言基础类库:Math类,Math类用来完成常用的数学运算数学常量:E,PI数学运算:(一般运算都以do

12、uble进行)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类,属性public final static double E;/数学常量epublic final static double PI;/圆周率常量方法(均为静态方法 public static),CCIT软件学院*,17,数学运算的Math类,CCIT软件学院*,1

13、8,示例:Math类,public class MathMethodpublic static void main(String args)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(M

14、ath.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

15、);,CCIT软件学院*,19,JAVA中的字符串,Java把字符串(常量或变量)作为包java.lang中String类和StringBuffer类的对象来分别处理字符串常量和字符串变量。由于使用频繁,有时也被视为基本类型遇到双引号自动创建String类的对象提供字符串运算符,字符串的连接:+定长字符串:String类(效率较高)不能更改,可用于比较、搜索之类的操作可变字符串:StringBuffer类(使用灵活)可追加、插入、修改,但内存管理复杂,CCIT软件学院*,20,字符串类-String,Java语言将字符串作为对象来处理,每一个字符串常量是字符串类String的一个实例。构造方法

16、 String()、String(String)、String(char chars)创建字符串String s=new String();/生成一个空字符串String s=new String(“abc”);char data=a,b,c;String s=new String(data);String s=“abc”;/采用字符串直接定义获得内存空间Object 的方法 toString()实现其他对象向字符串的转换,CCIT软件学院*,21,字符串类-String,方法int length()/返回字符串长度 例:“Java与面向对象程序设计”.length()的值为13char ch

17、arAt(int index)/返回指定位置的字符 例:Java与面向对象程序设计.charAt(2)int compareTo(String s2)/按字母序进行字符串比较 boolean equals(Object obj)/判断字符串相等(区分大小写)boolean equalsIgnoreCase(String s2)/(不区分大小写)String toLowerCase()/将字符串所有大写字母转换为小写String toUpperCase()/将字符串所有小写字母转换为大写valueOf(Object obj)/将某个对象的实例转换成字符串,CCIT软件学院*,22,字符串类-St

18、ring,String substring(int beginIndex)/取子串 String substring(int beginIndex,int endIndex)int indexOf(String str)/返回str在当前串中开始位置 int indexOf(String str,int fromIndex)int lastIndexOf(String str,int fromIndex)/.boolean startsWith(String prefix)/判断该字符串是 否以prefix为前缀。boolean endsWith(String suffix)/判断该字符串是

19、否以suffix为后缀。char toCharArray()/将字符串转为字符数组String concat(String str);/连接字符串replace(char oldChar,char newChar)/字符替换,CCIT软件学院*,23,字符串类StringBuffer,String类对象表示的是不可变的字符串,如果需要修改String对象所表示的内容,必须重新创建一个对象:String str=Peter;str=str+当修改操作频繁,或字符串的值很大时,会额外分配大量内存因此,Java语言引入了一个StringBuffer类,用来表示内容可以扩充和修改字符串对象,CCIT软

20、件学院*,24,字符串类StringBuffer,StringBuffer类对象是可变的字符串,有改变字符串内容和长度的若干方法,并且,StringBuffer在多线程中使用是安全的。构造方法StringBuffer()/创建一个空的StringBuffer对象StringBuffer(int length)/设置初始容量StringBuffer(String s)/利用已有字符串String对象来初始化注意,下面语句不能创建StringBuffer对象:StringBuffer ms=my Stringbuffer;,CCIT软件学院*,25,字符串类StringBuffer方法,Strin

21、g toString()将可变串变为不可变字符串int length()得到当前StringBuffer的长度(字符数)int capacity()得到当前StringBuffer的容量int indexOf(String str)获取str在字串中的位置StringBuffer append(String str)将str添加到StringBuffer中StringBuffer delete(int start,int end)删除start和end间的字符StringBuffer insert(String str,int index)向StringBuffer插入字串StringBuff

22、er replace(int start,int end,String str)用str代替start和end之间的字符void setCharAt(int index,char ch)设置位置index的字符为ch/这些方法一般都有重载,参数可以是单个字符(char),CCIT软件学院*,26,字符串的赋值和加法,Java的字符串连接运算符+,例如:String str=Hello,;str=str+Tom!;编译器自动将该语句解释为:String str=new StringBuffer().append(Hello,).toString();str=str=new StringBuffe

23、r().append(Tom!).toString();,CCIT软件学院*,27,字符串分析-StringTokenizer,将字符串分解成可被独立使用的单词StringTokenizer(String s),使用默认的分隔符集合,即空格、换行、回车、Tab.StringTokenizer(String s,String delim)指定delim字符为分隔符使用:while(f.hasMoreTokens()/判断是否还有下一个串 String s=f.nextToken();/取一个字串 int c=f.countTokens();/个数.,CCIT软件学院*,28,CCIT软件学院*,

24、29,数组(Array),数组是一种特殊的对象数组用来组织一组类型相同的对象。数组中的成员通过下标来访问。数组的大小在创建数组实例时确定,而不是定义数组变量时。数组的大小一经确定将不在改变。在创建数组时,数组成员都被赋予初值。示例:int intArray;/定义变量时不指定大小int intArray;/两种定义方法都可以intArray=new int3;/创建数组实例时确定大小intArray0=3;/数组下标从0开始,CCIT软件学院*,30,数组(Array),数组的长度不是在声明时指定,而是在创建时由所开辟的内存单元数目确定数组的创建(3步)数组的声明创建数组空间创建数组元素并初始

25、化。若数组元素为基本数据类型,第三步可以省略;当数组元素为对象时,则必须对数组元素进行创建和初始化。一维数组定义 int intArray;数组类对象引用说明(intArray)动态分配空间(new int 5 或数组初始化)int intArray=new int 5;,CCIT软件学院*,31,数组(Array),可以在声明数组的同时创建数组,例如:float boy=new float10;用new为数组分配内存后,自动用数据类型的缺省值初始化所有的数组元素。整型-0,实型-0.0f或0.0d,字符型-0,类对象-null 可以在声明数组的同时,为数组赋初值。例如:int a=1,2,3

26、,4,5;String weeks=“Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”,”Sun”数组元素的访问格式为:数组名下标 下标从0开始例如,以上定义的int型数组 a的5个元素为a0,a1,a2,a3,a4数组创建后,可以对数组元素赋值,数组元素也可以参加表达式运算,如:a0=10;int i=a3+7;JAVA提供了获得数组长度的方法,数组名.length。例如:a.length得到数组a的长度5。,CCIT软件学院*,32,课堂练习,CCIT软件学院*,33,实用工具类库java.util,java.util 包提供了一些实用的方法和数据结构提供日期(Date

27、)类、日历(Calendar)类来产生和获取日期及时间提供随机数(Random)类产生各种类型的随机数提供了堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构,CCIT软件学院*,34,java.util包-Date类,日期类中封装了有关日期和时间的信息,用户还可以通过调用相应的方法来获取系统时间或设置日期和时间在日期类中共定义了六种构造函数public Date()public Date(long date)/date以毫秒为单位,从1970.1.1 0:0开始public Date(String s)public Dat

28、e(int year,int month,int date)public Date(int year,int month,int date,int hrs,int min)public Date(int year,int month,int date,int hrs,int min,int sec)参数说明year值:需设定的年份-1900,month(0-11),date(1-31),hrs(0-23),min,sec(0-59),CCIT软件学院*,35,java.util包-Date类,Date类的方法public static long UTC(int year,int month,i

29、nt date,int hrs,int min,int sec)该方法利用给定参数计算UTC值。UTC是一种计时体制,与GMT(格林威治时间)的计时体制略有差别。UTC基于原子时钟的,而GMT基于天文观测的。计算机中一般位GMT计时体系。public static long parse(String s)该方法将字符串s转换成一个long型的日期。s有一定的格式,一般为:(星期 日 年 时间 GMT+时区)。若不注明时区,则为本地时区。,CCIT软件学院*,36,java.util包-Date类,public void setMonth(int month)public int getMont

30、h()这2个方法分别为设定和获取月份值(0-11)public String toString()public String toLocalString()public String toGMTString()将给定日期对象转换成不同格式的字符串。public int getTimezoneOffset()该方法用于获取日期对象的时区偏移量boolean after(Date)/比较所包含的日期是否迟于参数指定的日期boolean before(Date)Long getTime()Void setTime(long),CCIT软件学院*,37,示例:Date类,import java.uti

31、l.Date;public class DateTestpublic static void main(String args)Date curDate=new Date();System.out.println(Current Date=+curDate);Date newDate=new Date(10000);System.out.println(New date=+newDate);System.out.println(curDate.after(newDate);System.out.println(curDate.before(newDate);System.out.println

32、(MS since 1970-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(公历)有不同的构造方法,用来创建实例。

33、如:GregorianCalender(year,month,date,),CCIT软件学院*,39,java.util包-GregorianCalendar,GregorianCalendar是Calendar的子类,它实现了世界上普遍使用的公历系统(阳历)类GregorianCalendar提供了七种构造函数:GregorianCalendar()GregorianCalendar(TimeZone zone)GregorianCalendar(Locale aLoc)GregorianCalendar(TimeZone zone,Locale aLoc)GregorianCalendar

34、(int year,int month,int date)GregorianCalendar(int year,int month,int date,int hour,int minute)GregorianCalendar(int year,int month,int date,int hour,int minute,int second)用给定的日期和时间创建一个GregorianCalendar对象TimeZone是java.util包中的一个类,其中封装了有关时区的信息。每个时区对应一组ID,类TimeZone提供方法完成时区与对应ID两者之间的转换。,CCIT软件学院*,40,示例:

35、Calendar,GregorianCalendar,import java.util.*;public class CalendarTestpublic static void main(String args)String arrW=日,一,二,三,四,五,六;System.out.println(当前时间:+Calendar.getInstance().getTime();Date d1=new GregorianCalendar(2005,8,1,1,1,00).getTime();Date d2=new Date();long diff=d2.getTime()-d1.getTime

36、();System.out.println(d1+与+d2+差距天数=+diff/(1000L*60*60*24);Calendar c=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(Calen

37、dar.SECOND)+(c.get(Calendar.AM_PM)=1?PM:AM);System.out.println(星期+arrWc.get(Calendar.DAY_OF_WEEK)-1);,CCIT软件学院*,41,java.util包-向量类Vector,提供了向量(Vector)类以实现类似动态数组的功能Vector是Java语言为解决数组长度和元素类型不能改变而引入的工具类,用来表示列表数据结构。其元素可以是任何类型的对象(不能是简单数据类型,如果要存放,可以用数据类型类)向量类提供了三种构造方法:public vector()public vector(int initi

38、alcapacity,int capacityIncrement)public vector(int initialcapacity),适合于如下的情况需要处理的对象数目不定序列中元素都是对象,而不是基本数据类型的量需要做频繁的元素插入和删除需要定位序列中的对象或其他查找操作,CCIT软件学院*,42,java.util包-向量类Vector,事实上,灵活使用数组也可完成向量类的功能,但向量类中提供的大量方法大大方便了用户的使用。用第一种构造方法,系统会自动对向量对象进行管理。若使用后两种方法,则系统将根据参数initialcapacity设定向量对象的容量(即向量对象可存储数据的大小),当真

39、正存放的数据个数超过容量时,系统会扩充向量对象的存储容量。参数capacityIncrement给定了每次扩充的扩充值。当capacityIncrement为0时,则每次扩充一倍。利用这个功能可以优化存储。创建了一个向量类的对象后,可以往其中随意地插入不同的类的 对象,既不需要顾及类型也不需要预先选定向量的容量,并可方便地进行查找。对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用向量类。,CCIT软件学院*,43,向量类Vector的方法,插入功能public final synchronized void addElement(Object obj)将

40、obj插入向量的尾部。obj可以是任何类的对象。对同一个向量对象,可在其中插入不同类的对象。但插入的应是对象而不是数值,所以插入数值时要注意将数值转换成相应的对象。例 要插入一个整数1时,不要直接调用v1.addElement(1),正确方法为:Vector v1=new Vector();Integer int1=new Integer(1);v1.addElement(int1);/也可使用add()方法public final synchronized void setElementAt(Object obj,int index)将index处的对象设成obj,原来的对象将被覆盖publ

41、ic final synchronized void insertElementAt(Object obj,int index)在index指定的位置插入obj,原来的对象以及此后的对象依次往后顺延,CCIT软件学院*,44,向量类Vector的方法,删除功能public final synchronized void removeElement(Object obj)从向量中删除obj。若有多个存在,则从向量头开始试,删除找到的第一与obj相同的向量成员public final synchronized void removeAllElement()删除向量中所有的对象public fina

42、l synchronized void removeElementAt(int index)删除index所指的地方的对象,CCIT软件学院*,45,向量类Vector的方法,查询搜索功能public final int indexOf(Object obj)从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1public final synchronized int indexOf(Object obj,int index)从index所表示的下标处开始搜索objpublic final int lastIndexOf(Object obj)从向量尾部开始逆

43、向搜索objpublic final synchronized int lastIndexOf(Object obj,int index)从index所表示的下标处由尾到头逆向搜索objpublic final synchronized Object firstElement()获取向量对象中的首个objpublic final synchronized Object lastElement()获取向量对象中的最后一个obj,CCIT软件学院*,46,向量类Vector的方法,其他方法:取出向量中的指定元素 Object get(int index)测试对象在向量中是否存在 boolean c

44、ontains(Object obj)返回指定位置的元素 Object elementAt(int index)由于返回的是Object类型的对象,在使用前要进行强制类型转换,将返回的对象引用转换成Object类的某个具体子类的对象。String str=(String)MyVector.elementAt(0);返回一个包含向量中所有元素的对象数组 Object toArray()清空向量(删除所有元素)clear()测试向量是否为空 boolean isEmpty()当前向量元素数量 int size()向量当前容量 int capacity(),CCIT软件学院*,47,示例:向量类Ve

45、ctor,import java.util.*;class VectorTestpublic static void main(String args)Vector vec=new Vector();Date date=new Date();vec.add(new Integer(1);vec.add(new Float(3.45f);vec.add(new Double(1.2);vec.add(date);System.out.println(Size:+vec.size();Integer n1=(Integer)vec.get(0);System.out.println(向量第1个元素

46、:+n1.intValue();Float n2=(Float)vec.get(1);System.out.println(向量第2个元素:+n2.floatValue();Double n3=(Double)vec.get(2);System.out.println(向量第3个元素:+n3.doubleValue();Date n4=(Date)vec.lastElement();System.out.println(向量第4个元素:+n4.toString();if(vec.contains(date)System.out.println(存在date);,CCIT软件学院*,48,课堂练习,CCIT软件学院*,49,下一节课的内容,Unit 5-异常(Exception)处理异常机制简介用异常机制处理错误系统预定义异常对象用户自定义异常对象捕获异常抛出异常异常的分类须查异常与不须查异常Java异常的使用异常处理的优点,CCIT软件学院*,50,下课!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号