面向对象语言程序设计课程第五章课件.ppt

上传人(卖家):晟晟文业 文档编号:4941493 上传时间:2023-01-27 格式:PPT 页数:66 大小:343.01KB
下载 相关 举报
面向对象语言程序设计课程第五章课件.ppt_第1页
第1页 / 共66页
面向对象语言程序设计课程第五章课件.ppt_第2页
第2页 / 共66页
面向对象语言程序设计课程第五章课件.ppt_第3页
第3页 / 共66页
面向对象语言程序设计课程第五章课件.ppt_第4页
第4页 / 共66页
面向对象语言程序设计课程第五章课件.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、面向对象JAVA语言程序设计信息科学与技术学院信息科学与技术学院 网络工程系网络工程系 周文峰周文峰2第五章 常用系统类 主要任务:介绍Java常用的系统类,包括字符串类、输入输出流类、Java Applet类、数学函数类、日期类、随机数类以及向量类等。3 主要内容 字符串类 StringString类类 StringBufferStringBuffer类和类和StringBuilderStringBuilder类类4 5.1 字符串类字符与字符串的区别 字符是指用单引号括起来单个字符,如a、b、A等。这里的字符不是指占1个字节的ASCII字符,而是指占2个字节的Unicode字符。因为Uni

2、code被设计用来处理现在世界上所有书面语言中的字符,所以一个汉字也是被当作一个字符来处理的。对于单个字符,除了有char这个原始类型以外,Java平台中的java.lang包还专门提供了一个Character类来进行储存和操作。在计算机科学领 域中,Unicode(统一码、万国 码、单一码、标准万国码)是业界的一种标准。5 5.1 字符串类 字符串是程序设计中经常用到的数据结构,很多编程语言将字符串定义为基本数据类型。但在Java语言中,字符串被定义为类,必须先生成类的实例对象然后才能使用。常用有两种类型的字符串:一种是创建以后不需要改变的,称为字符串常量,在Java中,String类用于存

3、储和处理字符串常量;另外一种字符串是创建以后,需要对其进行改变的,称为字符串变量,在Java中,StringBuffer类用于存储和操作字符串变量。6字符串与字符串类 字符串是一个完整的字符序列,可以包含字母、数字和其它符号。在Java中,用双引号括起来的字符串是字符串常量,又称为无名字符串对象,由Java自动创建。字符串常量可以赋给任何一个String对象引用,这样处理从表面上看起来和其它编程语言没有大的差别,照顾了程序员的习惯,但实际上存在着较大的差异。无论何时,Java中的字符串都是以对象的面孔出现的,在运行时要为它分配内存空间,创建对象引用。7Java将字符串定义为类有哪些好处呢?首先

4、,在任何系统平台上都能保证字符串本身以及对字符串的操作是一致的。对于网络环境,这一点是至关重要的。其次,String和StringBuffer经过了精心设计,其功能是可以预见的。为此,二者都被说明为最终类,不能派生子类,以防用户修改其功能。最后,String和StringBuffer类在运行时要经历严格的边界条件检验,它们可以自动捕获异常,提高了程序的健壮性。85.1字符串类 字符串对象 字符串长度及查找 字符串的连接及子串 字符串常量与比较 String对象的不变性 命令行参数95.1.1 字符串类 Java语言提供了三个字符串类:String类、StringBuffer类和StringBu

5、ilder类。String类是不变字符串,StringBuffer和StringBuilder是可变字符串,这3种字符串都是16位(2个字节)的Unicode字符序列,并且这3个类都被声明为final,因此不能被继承。105.1.1 字符串类 Java语言用String类表示字符串。一般使用String类的构造方法创建一个字符串对象。String类有13个重载的构造方法,可以生成一个空字符串,也可以由字符或字节数组生成字符串。String类常用的构造方法如下:public String()/空字符序列构造字符串对象 public String(char value)/字符数组构造字符串对象11

6、5.1.1 字符串类 public String(char value,int offset,int count)/字符数组的子数组 public String(byte bytes)/byte数组构造字符串对象数组构造字符串对象 public String(byte bytes,int offset,int length)public String(String original)/构造一个original的副本副本 public String(StringBuffer buffer)public String(StringBuilder buffer)125.1.1 字符串类例如:char

7、 chars1=A,B,C;char chars2=中,国,;String s1=new String(chars1);String s2=new String(chars2,0,4);135.1.1 字符串类 在Java中,还有一种特殊的创建String对象的方法,这种方法是直接利用字符串常量创建字符串对象,例如:String s=“This is a Java string.”;14常量串存储在串池中。编译时,每当碰到一个常量串,JVM就会在串池中搜索,如果此串存在,则直接使用这个现成的串;如果没有,就在串池中创建一个新串。String x=“abcd”;String y=“abcd”;S

8、tring z=“1234”;xyz串池对象:”abcd”对象:”1234”x,y,z x,y,z并不是真正的对象,只是指向对象存储位置并不是真正的对象,只是指向对象存储位置的引用。(的引用。(C C语言中称为指针)语言中称为指针)栈内存 搜索没找到找到nullnullnull字符串的内存分配(字符串常量)字符串的内存分配(字符串常量)15 字符串变量与字符串常量不存储在同样的位置。字符串的内存分配(创建串对象)String x=new String(“abcd”);x对象:”abcd”对象:”abcd”其它常量对象串池null搜索找到复制栈内存 堆内存 165.1.2 字符串长度及查找 创建

9、String类对象外,更常用的是调用String类的方法,该类定义了许多方法。public int length()返回字符串的长度,即字符串包含的字符个数。注意对含有汉字和其他语言符号的字符串,计算长度时,一个符号作为一个字符计数。例如获取字符串“MingRiSoft”长度的代码如下:String nameStr=MingRiSoft;int i=nameStr.length();/获得字符串的长度为10175.1.2 字符串长度及查找 public int indexOf(int ch)查找字符ch第一次出现的位置。如果查找不成功则返回-1。public int indexOf(int c

10、h,int fromIndex)查找字符ch从fromIndex开始第一次出现的位置(在原字符串中的下标)。String str=mingrikeji;int i=str.indexOf(i);System.out.println(字符i第一次出现在索引:+i);/索引值是1185.1.2 字符串长度及查找 public int indexOf(String str)查找字符串str第一次出现的位置。如果查找不成功则返回-1。public int indexOf(String str,int fromIndex)查找字符串str从fromIndex开始第一次出现的位置(在原字符串中的下标)。S

11、tring str=mingrikeji;i=str.IndexOf(ri);System.out.println(“字符串“ri”第一次出现在索引:+i);/索引值是4195.1.2 字符串长度及查找 public int lastIndexOf(int ch)查找字符ch最后一次出现的位置。public int lastIndexOf(int ch,int endIndex)查找字符ch到endIndex为止最后一次出现的位置。String str=mingrikeji;i=str.lastIndexOf(i);System.out.println(字符i最后一次出现在索引:+i);/索引

12、值是9i=str.lastIndexOf(i,4);System.out.println(“到第4个字符为止,字符i最后一次出现在索引:+i);/索引值是1205.1.2 字符串长度及查找 public int lastIndexOf(String str)查找字符串str最后一次出现的位置。public int lastIndexOf(String str,int endIndex)查找字符串str到endIndex为止最后一次出现的位置(在原字符串中的下标)。String str=mingrikeji;i=str.lastIndexOf(ri);System.out.println(“字符

13、串ri最后一次出现在索引:+i);/索引值是4215.1.3 字符串的连接与子串 public String concat(String str)调用字符串与参数字符串连接起来,产生一个新的字符串。public String substring(int beginIndex,int endIndex)从字符串的下标beginIndex开始到endIndex结束产生一个子字符串。(不包含endIndex处的字符)public String substring(int beginIndex)从字符串的下标beginIndex开始到结束产生一个子字符串。225.1.3 字符串的连接与子串 publi

14、c char charAt(int index)返回字符串中指定位置的字符,index表示位置,范围为0s.length()-1。public String replace(char oldChar,char newChar)将调用字符串中的所有oldChar字符改变为newChar字符,返回一个新的字符串。235.1.3 字符串的连接与子串 public String toUpperCase()public String toLowerCase()将字符串转换成大写或小写字母。public boolean startsWith(String prefix)public boolean end

15、sWith(String suffix)返回字符串是否以某个字符串开始或结尾。245.1.3 字符串的连接与子串 public void getChars(int srcBegin,int srcEnd,char dst,int dstBegin)将字符串中从起始位置(srcBegin)到结束位置(srcEnd)之间的字符复制到字符数组dst中从起始位置为dstBegin。255.1.3 字符串的连接与子串下面的程序说明了String对象的使用。String s=new String(This is a Java string.);System.out.println(s.length();/

16、22 System.out.println(s.charAt(10);/J System.out.println(s.lastIndexOf(a);/13 System.out.println(s.lastIndexOf(a,10);/8 System.out.println(s.indexOf(is);/2265.1.3 字符串的连接与子串 String s=new String(This is a Java string.);System.out.println(s.lastIndexOf(is);/5 System.out.println(s.indexOf(my);/-1 char s

17、ubs=new char4;s.getChars(10,14,subs,0);System.out.println(subs);/Java275.1.3 字符串的连接与子串 String s=new String(This is a Java string.);String s1=Its interesting.;s1=s.concat(s1);System.out.println(s.toUpperCase();/THIS IS A JAVA STRING.System.out.println(s1.toLowerCase();/this is a java string.its inter

18、esting.System.out.println(s.endsWith(in);/false285.1.4 字符串解析 String类提供了一个split()方法,它用来实现将一个字符串分解成子字符串或令牌(token)。该方法使用正则表达式指定分隔符public String split(String regex,int limit)public String split(String regex)29public class SplitDemopublic static void main(String args)String ss=11,22,33;System.out.println

19、(ss);String str=ss.split(,);System.out.println(str0);System.out.println(str1);System.out.println(str2);305.1.5 字符串常量与字符串比较 在Java程序中,凡是由双引号定界的字符序列都是字符串常量(literal string),如”abc”。字符串常量存放在字符串常量池(pool of literal string)中。字符串常量也是String类的对象,可以直接使用,例如:System.out.println(Hello.length();/结果输出5 311.字符串相等的比较 你可

20、能想到用“=”号来比较,如下代码所示。String s1=new String(Hello);String s2=new String(Hello);System.out.println(s1=s2);5.1.5 字符串常量与字符串比较32再看下面一段代码:String s1=“Hello”;String s2=“Hello”;System.out.println(s1=s2);33String str1=abc;String str2=abc;System.out.println(str1=str2);/true 字符串的比较str1str2串池对象:”abc”栈内存 搜索找到nullnul

21、l没找到Str1与与str2存储的是同一块内存地址存储的是同一块内存地址34 String str1=new String(abc);String str2=new String(abc);System.out.println(str1=str2);/false字符串的比较str2对象:”abc”对象:”abc”其它常量对象串池null搜索找到复制栈内存 堆内存 str1对象:”abc”nullstr1str1与与str2str2存储的是堆内存中的不同地址存储的是堆内存中的不同地址35 如果要比较两个对象的内容是否相等,可以使用String类的equals()方法。对于上面两种情况,表达式:s

22、1.equals(s2);的结果都为true,因为s1、s2的内容都相等。例如比较字符串“A”和字符串“a”是否相等:注意:equals()方法在比较两个字符串时区分字母大小写。String str=A;boolean b=str.equals(“a”);/比较结果b为false362.字符串大小的比较 要比较字符串的大小,可以使用String类的compareTo()compareTo()方法,该方法的格式为:public int compareTo(String anotherString)37 字符串比较使用字符的Unicode码值进行比较。若当前字符串小于参数字符串时,方法返回值小于0

23、,若当前字符串大于参数字符串时,方法返回值大于0,若当前字符串等于参数字符串时,方法返回值等于0。例如,表达式:“abc”.compareTo(“abd”)/返回值为-1。38 对于字符串相等和大小比较还可以忽略大小写,可以使用下面两个方法:public boolean equalsIgnoreCase(String anotherString)public int compareToIgnoreCase(String anotherString)注意,字符串不能使用、=、java ThreeInteger “23”“-234”“100”程序运行结果为:max=100 min=-23447 注

24、意:命令行参数传递的是字符串,若将其作为数值处理,需要进行转换。若字符串中含有非数值字符,则抛出NumberFormatException运行时异常。根据传递的参数个数确定数组args的长度,如果给出的参数少于引用的元素,则抛出ArrayIndexOutOfBoundsException运行时异常。如D:java ThreeInteger“23”“-234”485.2 StringBuilder5.2 StringBuilder和和StringBufferStringBuffer类类 创建StringBuffer对象 StringBuffer对象的访问和修改 StringBuilder类495

25、.2.1 创建StringBufferBuffer对象 字符串缓冲区类StringBuffer类是字符串的另一种处理办法。StringBuffer类常用的构造方法有下面三个:public StringBuffer()创建一个没有字符的字符串缓冲区,初始容量为16个字符。此时length()方法的值为0,而capacity()方法的值为16。50 public StringBuffer(int capacity)创建一个没有字符的字符串缓冲区,capacity为指定的初始容量。public StringBuffer(String str)利用一个已存在的字符串对象str创建一个字符串缓冲区对象,

26、另外再分配16个字符的缓冲区。51 StringBuffer类除定义了length()、charAt()、getChars()、indexOf()等方法外,还提供了下列常用方法:public int capacity()返回当前的字符串缓冲区的容量。public void setCharAt(int index,char ch)用ch修改指定位置的字符。52 public StringBuffer deleteCharAt(int index)删除指定位置的字符。public StringBuffer append(String str)向当前的字符串的末尾添加一个字符串。该方法有一系列的重载

27、方法,参数可以是boolean、char、int、long、float、double、char等任何数据类型。53 public StringBuffer insert(int offset,String str)从当前字符串的指定位置插入一个字符串。这个方法个也有多个重载的方法,参数可以是boolean、char、int、long、float、double、char等类型。public StringBuffer delete(int start,int end)删除从start开始到end(不包括end)之间的字符。54 public StringBuffer replace(int sta

28、rt,int end,String str)用字符串str替换从start开始到end(不包括end)之间的字符。public StringBuffer reverse()将字符串的所有字符反转。public StringBuffer substring(int start)返回从start开始到字符串末尾的子字符串 55 public StringBuffer substring(int start,int end)返回从start开始到end(不包括end)之间的子字符串。例:下面程序演示了StringBuffer对象及其方法的使用。StringBuffer sb=new StringBu

29、ffer(Hello);System.out.println(sb);/Hello System.out.println(sb.length();/5 System.out.println(sb.capacity();/2156 sb.append(Java);System.out.println(sb);/HelloJava System.out.println(sb.insert(5,“,”);/Hello,Java System.out.println(sb.replace(6,10,World!);/Hello,World!System.out.println(sb.reverse()

30、;/!dlroW,olleH 575.2.3 StringBuilder类 StringBuilder类与StringBuffer类的区别是 StringBuffer类的实例是线程安全的,StringBuilder类的实例不是线程安全的。如果需要线程同步,推荐使用StringBuffer类。58习题1.下列关于构造方法描述错误的是 。A.Java语言规定构造方法名与类名必须相同;B.Java语言规定构造方法没有返回值,但不用void声明;C.Java语言规定构造方法不可以重载;D.Java语言规定构造方法只能通过new自动调用。2.已知语句int a=1,2,3;下列描述错误的是 。A.定义了

31、一个名为a的一维数组 B.数组a有3个元素C.数组a中每个元素都是整型D.数组元素a3的值为359习题3下列选项中,用于在定义子类时声明父类名的关键字是 。A.interface B.package C.extends D.class4.设 i、j、k 为类 x 中定义的 int 型变量名,下列类 x 的构造函数中不正确的是 。A.x(int m).B.void x(int m).C.x(int m,int n).D.x(int h,int m,int n).5.Java 和 c+都是面向对象的程序设计语言。()6.同一个类中定义多个参数列表不同的同名方法,叫做方法的重载。()60习题7.一个

32、程序里可以有多个父类,也可以有多个主类。()8.一个子类可以重新定义从父类那里继承来的同名方法,而且允许它们有不同的返回值。()9.Java application中的主类需包含main方法,main方法的返回类型是 。A.int B.float C.double D.void 10.在类的定义中可以有两个同名方法,这种现象称为方法 。A.封装 B.继承 C.覆盖 D.重载6111.11.下列程序的输出结果是下列程序的输出结果是 。class Fclass Fpublic F()System.out.print(F()is called!);public F()System.out.print

33、(F()is called!);class S extends Fclass S extends Fpublic S()System.out.print(S()is called!);public S()System.out.print(S()is called!);public class Expublic class Expublic static void main(String args)public static void main(String args)S sa=new S();S sa=new S();A A)F()is called!F()is called!B B)S()i

34、s called!S()is called!C C)F()is called!S()is called!F()is called!S()is called!D D)S()is called!F()is called!S()is called!F()is called!62习题12.现有类说明如下:class Aint x=10;int GetA()return x;class B extends Aint x=100;int GetB()return x;问题:1)类B是否能继承类A的属性x?2)若b是类B的对象,则b.GetB()的返回值是什么?3)若b是类B的对象,则b.GetA()的返回

35、值是什么?4)类A和类B都定义了x属性,这种现象称为什么?63习题1313以下以下JavaJava语句中,语句中,String str=“123456789”;str String str=“123456789”;str=str.subString(1,3);=str.subString(1,3);执行后执行后strstr中的值为()。中的值为()。A.“23”B.“123”C.“12”D.“234”A.“23”B.“123”C.“12”D.“234”14.Java14.Java语言中,语言中,String String str=”123456789”,System.out.println(s

36、tr.indexOf(“5”),str=”123456789”,System.out.println(str.indexOf(“5”),输输出结果为()。出结果为()。a)a)6 6b)b)5 5c)c)4 4d)d)-1-115.15.在在javajava中,已定义两个接口中,已定义两个接口B B和和C C,要定义一个实现这两个接口的类,要定义一个实现这两个接口的类,以下语句正确的是以下语句正确的是()()。a)a)interface A extends B,Cinterface A extends B,Cb)b)interface A implements B,Cinterface A i

37、mplements B,Cc)c)class A implements B,Cclass A implements B,Cd)d)class A implements B,implements Cclass A implements B,implements C6416.16.给定给定JAVAJAVA代码,如下:代码,如下:Class ParentClass Parent public void count()public void count()System.out.println(10%3);System.out.println(10%3);public class Test extend

38、s Parentpublic class Test extends Parent public void count()public void count()System.out.println(10/3);System.out.println(10/3);public static void main(String args)public static void main(String args)Parent p=new Test();Parent p=new Test();p.count();p.count();运行编译后,输出结果是(运行编译后,输出结果是()。)。A.1 B.1.0 C

39、.3 D.3.3333333333333335A.1 B.1.0 C.3 D.3.333333333333333565习题17.17.在在java java 中中,下列下列()()类不能派生出子类。类不能派生出子类。a)public class MyClass b)class MyClass a)public class MyClass b)class MyClass c)abstract class MyClass d)final class MyClass c)abstract class MyClass d)final class MyClass 18.18.在在java java 中,

40、以下()命令能够将中,以下()命令能够将javajava源文件编译为类文件源文件编译为类文件a)Java b)javaw c)javac d)jara)Java b)javaw c)javac d)jar19.19.研究下面的研究下面的Java Java 代码,当代码,当x=2 x=2 时,运行结果是时,运行结果是()()。switch(x)switch(x)case1:System.out.println(1);case1:System.out.println(1);case2:case2:case3:System.out.println(3);case3:System.out.println(3);Case4:System.out.println(4);Case4:System.out.println(4);a)a)没有输出任何结果没有输出任何结果 b)b)输出结果为输出结果为3 3 c)c)输出结果是输出结果是3 3 和和4 d)4 d)输出结果是输出结果是l l、3 3 和和4 4 66习题20.试编写java代码实现一个计算器类Computer,其中包括:(1)用counterValue来保存计数器的当前值;(2)方法increment()计数器加1;(3)方法decrement()计数器减1;(4)方法reset()计数器清零。

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(面向对象语言程序设计课程第五章课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|