Java面向对象程序设计与系统开发第4章 面向对象开发常用类.ppt_第1页
Java面向对象程序设计与系统开发第4章 面向对象开发常用类.ppt_第2页
Java面向对象程序设计与系统开发第4章 面向对象开发常用类.ppt_第3页
Java面向对象程序设计与系统开发第4章 面向对象开发常用类.ppt_第4页
Java面向对象程序设计与系统开发第4章 面向对象开发常用类.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计与系统开发,第4章面向对象开发常用类,2,驱动任务一,定义一个字符串,它以空格、逗号(,)、点()和冒号(:)为分隔符,统计字符串有多少个单词,并将它们输出到屏幕上。,Java面向对象软件开发,3,目标及知识点,4,String类字符串,构造方法String():构造一个空字符串对象。String(charvalue):通过char数组构造字符串对象。String(Stringoriginal):构造一个传入的字符串的副本,该副本与传入的字符串对象是两个不同的对象,虽然它们的内容一样。String(StringBufferbuffer):通过StringBuffer对象来构造字符串对象,可以利用这个方法来将StringBuffer对象转变成String。,Stringstr1=Howdoyoudo?;/直接赋值方式Stringstr2=newString();/构造一个空串,不是nullStringstr3=newString(“Iamastudent!”);/通过已有字符串构造一个新的字符串对象,5,String类字符串,常用方法intlength():返回当前字符串长度。booleanequals(ObjectObject):当Object不为空并且与当前String对象一样,返回true;否则,返回false。Stringconcat(Stringstr):将该String对象与str连接在一起返回一个新字符串。charcharAt(intindex):取字符串中的某一个字符,其中的参数index指的是字符串中字符的序数。该序数从0开始。,Strings=Howdoyoudo?;intx=s.length();/x的值为:13,Strings=AB;booleanx=s.equals(AB);/x的值为truebooleany=s.equals(BA);/y的值为false,Strings1=to;Strings2=get;Strings3=her;System.out.print(s1.concat(s2.concat(s3);/输出结果为:together,Strings=newString(WelcometoJavaWorld!);System.out.println(s.charAt(5);/输出结果为:m,6,String类字符串,intindexOf(intch):从字符串中匹配参数中的字符,返回第一次匹配字符位置。intindexOf(intch,intfromIndex):从fromIndex这个参数表示的位置起查找,返回第一次匹配字符位置。intindexOf(Stringstr):返回匹配的字符串第一次出现的位置。intindexOf(Stringstr,intfromIndex):从fromIndex,Strings=newString(writeonce,runanywhere!);Stringss=newString(run);System.out.println(s.indexOf(r);/输出结果为:1System.out.println(s.indexOf(r,2);/输出结果为:12System.out.println(s.indexOf(ss);/输出结果为:12,7,String类字符串,Stringsubstring(intbeginIndex):取子串操作,返回从beginIndex位置开始到结束的子字符串。Stringsubstring(intbeginIndex,intendIndex):取从beginIndex位置开始到endIndex位置的子字符串。,Strings=我是中国人;Stringstr1=s.substring(2);/str1的值为“中国人”Stringstr2=s.substring(2,4);/str2的值为“中国”,8,String类字符串,Stringreplace(charoldChar,charnewChar):将字符串中所有的字符oldChar替换成newChar。Stringreplace(StringoldString,StringnewString):将字符串中所包含的oldString子串全部替换为newString。,Strings=abcbabcd;Stringstr1=s.replace(b,d);/str1的值“adcdadcd”Stringstr2=s.substring(ab,jk);/str2的值为“jkcbjkcd”,9,String类字符串,Stringtrim():去除字符串左右两边空格。StringtoLowerCase():将字符串转换成小写。StringtoUpperCase():将字符串转换成大写。,Strings=abc;Stringstr1=s.trim();/str1的值“abc”,Strings=abcABC;Stringstr1=s.toLowerCase();/str1的值“abcabc”Stringstr2=s.toUpperCase();/str2的值为“ABCABC”,10,StringBuffer类字符串,构造函数StringBuffer():构造一个没有任何字符的字符串对象。StringBuffer(intlength):构造一个长度为length的字符串对象。StringBuffer(Stringstr):以str为初始值构造一个StringBuffer类对象。,11,StringBuffer类字符串,常用方法publicStringBufferappend(Stringb):是向字符串缓冲区“追加”元素,而且这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数、对象类型、字符串和StringBuffer类等。如果添加的字符超出了字符串缓冲区的长度,Java将自动进行扩充。,Strings1=Thisisapencil;Strings2=box;StringBuffersb=newStringBuffer(s1);System.out.println(sb.append(s2);/结果为:Thisisapencilbox,Java面向对象软件开发,12,StringBuffer类字符串,publicStringBufferinsert(intoffset,doubled):在当前StringBuffer对象中插入一个元素,第一个参数offset表示插入位置,第二个参数d表要插入的数据,这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数、对象类型、字符串等。publicStringBufferdelete(intstart,intend):删除当前StringBuffer对象中以索引号start开始到end结束的子串,但不会删除end处的字符。,StringBuffersb=newStringBuffer(Iamastudent!);System.out.println(sb.insert(7,good);/输出结果为:Iamagoodstudent!,StringBuffersb=newStringBuffer(Iamastudent);System.out.println(sb.delete(0,7);/输出结果为:student,13,StringBuffer类字符串,publicStringBufferdeleteCharAt(intindex):删除指定位置的单个字符。publicStringBufferreplace(intstart,intend,Stringstr):替换当前StringBuffer对象的字符串。从start开始,到end结束的位置替换成str。publicStringBufferreverse():将字符串翻转。publicStringtoString():将StringBuffer中的内容放入一个String对象中返回出来,我们可以利用这个方法实现StringBuffer到String的转化。,StringBuffersb=newStringBuffer(too);System.out.println(sb.deleteCharAt(2);/输出结果为:to,StringBuffersb=newStringBuffer(Iamastudent.);System.out.println(sb.replace(7,14,teacher);/输出结果为:Iamateacher,StringBuffersb=newStringBuffer(0123456789);System.out.println(sb.reverse();/输出结果为:9876543210,StringBuffersb=newStringBuffer(0123456789);Stringstr=sb.toString();/str的值为“0123456789”,14,练习,1、定义一个字符串str,其值为“重庆正大软件职业技术学院”2、求字符串str长度3、求正在str中的位置,15,数据类型类,对应于Java中的基本数据类型(long,int,short,byte,float,double,char,boolean都有一个对应的数据类型类,封装了对对应基本数据类型操作的一些方法数据类型类与基本数据类型对照表,16,Integer类,静态域MAX_VALUE:通过类名可直接引用,得到该类型数据可以容纳的最大值。MIN_VALUE:通过类名可直接引用,得到该类型数据可以容纳的最小值。TYPE:通过类名可直接引用,得到该类对应的基本数据类型关键字。,System.out.println(Integer类可以容纳的最大值:+Integer.MAX_VALUE);System.out.println(Integer类对应的基本数据类型:Integer.TYPE);,17,Integer类,构造函数Integer(intvalue):通过一个int类型数据构造对象。Integer(Strings):通过一个String的类型数据构造对象。,Integerx=newInteger(123);/生成了一个值为123的Integer对象。Integery=newInteger(1234);/生成了一个值为1234的Integer对象。,18,Integer类,常用方法publicintintValue():返回该整数对象的数值publicstaticintparseInt(Strings):将数字字符串转化为int数。publicstaticIntegervalueOf(Strings):将字符串转换成Integer数。publicStringtoString():将Integer对象转化为字符串。publicstaticStringtoString(intd):将整型参数转化为字符串。,Integerx=newInteger(123);/生成了一个值为123的Integer对象。inty=Value();/y的值为123。,intx=Integer.parseInt(1234);/将字符串1234转变为int型返回。,inta=Integer.parseInt(123);intb=Integer.valueOf(678).intValue();longc=Long.parseLong(12345678);longd=Long.valueOf(12345678).longValue();floate=Float.parseFloat(123.456);floatf=Float.valueOf(123.456).floatValue();,19,【例4-1】编写程序演示数据类型类的使用。,publicclassDataTypeTestpublicstaticvoidmain(Stringargs)Integerx=newInteger(123456);inty=Value();System.out.println(y=+y);Stringstr=Integer.toString(1000+2000);System.out.println(str=+str);/显示对应的类型System.out.println(“Integer类数据类型是:+Integer.TYPE);/显示整型的最大值System.out.println(Integer类的最大值:+Integer.MAX_VALUE);/显示整型的最小值System.out.println(Integer类的最小值:+Integer.MIN_VALUE);,执行结果:y=123456str=3000Integer类对应的数据类型是:intInteger类的最大值:2147483647Integer类的最小值:-2147483648,20,数学(Math)类,数学函数类Math类提供了常用的数学运算方法以及Math.PI和Math.E两个数学常量。该类是最终类(finalclass),不能被继承,类中的方法和属性全部是静态成员,因此,只能使用Math类的方法而不能对其作任何更改。这个类有两个静态属性:E和PI属性。E代表数学中的自然对数(e),值为2.7182818,而PI代表派圆周率(),值为3.1415926。由于其是公有静态属性,所以使用时不用创建对象而是直接用Math.E和Math.PI进行调用。,21,Math类的主要方法,22,【例4-2】Math类主要方法的举例。,publicclassMathTestpublicstaticvoidmain(Stringargs)System.out.println(PI=+Math.PI);System.out.println(E=+Math.E);System.out.println(abs(-10.6)=+Math.abs(-10.6);System.out.println(ceil(8.2)=+Math.ceil(8.2);System.out.println(floor(5.7)=+Math.floor(5.7);System.out.println(round(7.8)=+Math.round(7.8);System.out.println(max(10,20)=+Math.max(10,20);System.out.println(min(10,20)=+Math.min(10,20);System.out.println(sqrt(64)=+Math.sqrt(64);System.out.println(exp(2)=+Math.exp(2);System.out.println(log(e)=+Math.log(Math.E);System.out.println(pow(3,2)=+Math.pow(3,2);System.out.println(sin(30)=+Math.sin(Math.toRadians(30);,执行结果:PI=3.141592653589793E=2.718281828459045abs(-10.6)=10.6ceil(8.2)=9.0floor(5.7)=5.0round(7.8)=8max(10,20)=20min(10,20)=10sqrt(64)=8.0exp(2)=7.38905609893065log(e)=1.0pow(3,2)=9.0sin(30)=0.49999999999999994,23,随机数处理(Random)类,简单产生一个小于1的随机数我们可以采用上面Math类中封装的random()方法。直接调用Math.random()就能返回一个随机数,每次调用返回的数字不会相同。若要产生a,b之间的随机数其通式为:(b-a+1)*Math.random()+a。,24,随机数处理(Random)类,构造函数Random():创建一个新的随机数发生器。Random(longseed):用一个种子(长整型)创建一个随机数发生器。所谓种子是生成随机数算法的起源数字,如果用相同的种子创建Random对象,生成的随机数序列是完全一样的。,25,随机数处理(Random)类,常用方法publicbooleannextBoolean():返回下一个从随机发生器的系列中得到的均匀分布的布尔值,相当于抛硬币,不是正面就是反面,因此这个方法返回true或者false。publicdoublenextDouble():该方法的作用是生成一个随机的double值,数值介于0,1.0)之间。publicintnextInt():生成int范围内的任意int数值。如果要获得某个区间的整数,可以参看下面的方法。intnextInt(intn):返回0,n)之间的整型值。也就是0到n之间的随机int值,包含0而不包含n。,例如生成50100之间的随机数如下代码:Randomr=newRandom();Intx=50+r.nextInt(50);,26,任务实现,1、分析该任务获知是对字符串的处理,分隔字符串,我们可以采用String类中的Stringsplit(Stringstr)方法进行分隔。由于是多种分隔符,我们采用java.util包中的StringTokenizer类进行处理。2、查询API获知StringTokenizer的构造方法,并用带参构造方法创建一个对象,其参数是被分析的字符串和分隔符字符串。3、利用StringTokenizer类中hasMoreTokens()判断是否还有下一个被分隔的子串,并用nextTokens()获得下一个被分隔的子串,最后将该子串打印出来。,27,任务实现,引入输入输出类所需要的包,用String类定义一个字符串对象str,并赋值,用StringTokenizer类为str构造一个字符串分析器str1;,用StringTokenizer的常用方法求子串,统计个数;,28,驱动任务二,创建一个学生类Student,其属性有学号sNo、姓名sName和性别sSex;再声明三个学生对象并赋值,然后用Set集合来实现对学生对象数据的存储,再从集合中获得这三个对象,并输出相应学生信息。,29,目标及知识点,30,集合框架概述,Java的实用工具类库java.util包中,提供了一些数据容器类,按照线性表、链表、堆栈、哈希表等数据结构来组织和操作其中的数据。一个集合(collection)就是一个存储一组对象的容器,一般将这些对象称为集合的元素(element)。Java集合构架支持三种类型集合:规则集(Set)、线性表(List)和图(Map),它们分别定义在接口Set、List和Map中。,31,集合框架概述,Set(集):集合中的对象不按特定方式排序(它的有些实现类能对集合中的对象按特定方式排序),并且没有重复对象。List(列表):集合中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。List与数组有些相似。Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复,32,Java集合框架中接口的继承关系图,集合框架概述,33,规则集Set和它的常用实现类,Collection接口是构造集合框架的基础,没有直接的实现类。Collection声明了所有集合都有的核心方法,Collection不提供get()方法。如果要遍历Collection中的元素,就必须用Iterator。Collection接口的iterator()方法返回一个指向集合的迭代器Iterator。Iterator接口提供next()方法(返回迭代的下一个元素。)和hasNext()方法(判断迭代探子是否还有元素)。使用集合框架时需要频繁使用迭代器。,34,Set接口,Set接口继承于Collection接口,其特点是它不允许集合中存在重复项。常用的Set接口实现类有HashSet和LinkedHashSet,既然Set接口继承于Collection接口,那么Collection接口中的方法在Set接口中同样可以使用,35,散列集HashSet,HashSet类是一个实现Set接口的具体类,可以用来存储互不相同的元素,注意,相同的元素存到一个HashSet对象中。它不保证数据在容器中的存放顺序,不保证顺序恒久不变,元素是没有顺序的,HashSet类允许存null元素。,36,【例4-3】演示HashSet容器的使用。,importjava.util.*;/Set接口及其实现类均在这个包中publicclassHashSetTest/*测试HashSet类存储元素及存储顺序*/publicstaticvoidmain(Stringargs)Sets=newHashSet();s.add(I);s.add(am);s.add(a);s.add(student);s.add(a);/测试能否添加重复元素System.out.print(排序结果:);/使用迭代器遍历集合中的每一个元素Iteratorit=s.iterator();while(it.hasNext()/如果HashSet对象中迭代器指向的数据下一个还存在的话System.out.print(it.next()+);/获得该数据,执行结果:排序结果:studentamaI,HashSet中不能存入两个一样的数据,另外它的存储数据结构不保证按顺序存储数据。,Sets=newLinkedHashSet();,执行结果:排序结果:Iamastudent,Sets=TreeSet();,执行结果:排序结果:Iamastudent,37,任务实现,引入java.util包中的相关类。,创建学生类Student,并为其定义一个构造函数,进行参数传递,定义测试类Test,在主函数main()中声明3个学生对象s1,s2,s3,并赋值,然后声明一个HashSet对象hs,为hs对象依次添加3个学生对象s1,s2,s3。,使用迭代器遍历集合中的每一个元素,38,驱动任务三,创建一个学生类Student,其属性有学号sNo、姓名sName和性别sSex;用其声明三个学生对象并赋值,然后用List集合来实现对学生对象数据的存储,再从其中将学生对象获取出来,并打印输出学生信息。,39,目标及知识点,40,List接口,41,线性存储结构,一种或多种特定关系的数据元素的集合在计算机中的表示称为数据的存储结构。其中线性表是一种典型的线性结构,是具有相同属性的数据元素的一个有限序列。性表的顺序存储是用一组连续的存储单元依次存储线性表中的数据元素,线性表采用顺序存储的方式称之为顺序表。顺序表不仅支持重复元素的存储,而且支持位置存储元素,即用户可以指定操作对应位置的元素。常见的线性结构有:顺序表、链表、栈、向量和队列等。,42,顺序表与链表:,顺序表是线性表的“顺序存储”,数据元素依次存储在一组连续的存储单元里而链表是线性表的“链式存储”,数据元素不一定存储在一组连续的存储单元里,通过“链条”连接相邻的元素,能很方便地完成元素的插入和删除工作,43,栈(Stack),是限定仅在表尾进行插入或删除操作的线性表对栈来说,表尾端有其特殊含义,称为栈顶,相应的表头称为栈底栈的数据操作只能在栈顶进行,数据的进栈(压入)和出栈(弹出)操作都在栈顶进行,也就是先进栈的元素后出栈,栈又称为“后进先出”的线性表,44,向量(Vector),可以实现长度可变的数组,但是Vector中只能存放对象。与数组一样,它包含可以使用整数索引进行访问的组件。,45,队列(Queue),和栈相反,队列是一种“先进先出”的线性表它只允许在表的一端进行插入(入队列),在另一端进行删除(出队列)。允许插入的一端叫做队尾,允许删除的一端叫做对头,46,ArrayList与LinkedList,ArrayListArrayList是一个实现List接口的能自动增长容量的动态数组,实际是采用对象数组实现的,47,【例4-4】演示ArrayList类的常用方法使用,importjava.util.ArrayList;importjava.util.List;publicclassArrayListTestpublicstaticvoidmain(Stringargs)Listlist=newArrayList();/添加对象元素到数组列表中list.add(newInteger(11);list.add(newInteger(12);list.add(newInteger(13);list.add(null);list.add(newString(hello);System.out.println(数组元素为:);/使用迭代器遍历集合中的每一个元素Iteratorit=list.iterator();while(it.hasNext()System.out.println(“a”+i+“=”+it.next();/获取ArarryList对象中存放的数据,注意获得的是Object类型的,执行结果:数组元素为:a0=11a1=12a2=13a3=nulla4=hello,LinkedList(),执行结果一样,48,向量类Vector,Vector和ArrayList一样是List接口的实现类,它也是用来存放数据的容器常用属性:capacity:集合最多能容纳的元素个数。capacityIncrement:表示每次增加多少容量。size:表示集合当前元素个数。,49,向量类Vector,常用方法:voidaddElement(Objectobj):添加元素到末尾。voidadd(intindex,Objectelement):指定索引位置添加元素。ObjectelementAt(intindex):取指定索引位置元素。voidinsertElementAt(Objectobj,intindex):将元素插入到指定索引位置。

温馨提示

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

评论

0/150

提交评论