B05数组与字符串-1ppt课件(全)

上传人:沈*** 文档编号:214586065 上传时间:2023-05-30 格式:PPT 页数:53 大小:416KB
收藏 版权申诉 举报 下载
B05数组与字符串-1ppt课件(全)_第1页
第1页 / 共53页
B05数组与字符串-1ppt课件(全)_第2页
第2页 / 共53页
B05数组与字符串-1ppt课件(全)_第3页
第3页 / 共53页
资源描述:

《B05数组与字符串-1ppt课件(全)》由会员分享,可在线阅读,更多相关《B05数组与字符串-1ppt课件(全)(53页珍藏版)》请在装配图网上搜索。

1、第第5章章 数组与字符串数组与字符串5.1 数组5.2 字符串5.1 数组数组5.1.1 数组定义及说明5.1.2 数组应用举例5.1.1 数组定义及说明数组定义及说明1数组基本含义同一类型数据元素的有限有序集合同一类型数据元素的有限有序集合元素的类型可以是基本数据类型或对象引用,可以随机访问数组元素的类型可以是基本数据类型或对象引用,可以随机访问数组中的元素。中的元素。在在JavaJava语言中,数组是以对象的形式存在。可以赋值给语言中,数组是以对象的形式存在。可以赋值给ObjectObject类类型的变量,在数组中可以调用类型的变量,在数组中可以调用类Object Object 的所有方法

2、。的所有方法。数组元素通过数组名字和非负整数下标值来引用。下标值起始值数组元素通过数组名字和非负整数下标值来引用。下标值起始值为为0 0。每个数组都有一个由每个数组都有一个由 public final public final 修饰的成员变量:修饰的成员变量:lengthlength,即数组含有元素的个数(即数组含有元素的个数(lengthlength可以是正数或零)可以是正数或零)5.1.1 数组定义及说明数组定义及说明2数组声明(1)(1)一维数组声明一维数组声明Type Type 数组名数组名 ;例如:例如:int a;int a;Type Type 数组名;数组名;例如:例如:int

3、a;int a;(2)(2)二维数组声明二维数组声明Type Type 数组名数组名 ;例如:例如:int a;int a;Type Type 数组名;数组名;例如:例如:int a;int a;5.1.1 数组定义及说明数组定义及说明说明:声明数组时无需指明数组元素的个数,也不为数组元声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间素分配内存空间TypeType为数组的类型,可以是基本数据类型也可以是引为数组的类型,可以是基本数据类型也可以是引用类型用类型必须经过初始化分配内存后才能使用。必须经过初始化分配内存后才能使用。注意:方括号中无数字,以下数组声明是错误的。方括号中无数字

4、,以下数组声明是错误的。char s5;char s5;/W /W5.1.1 数组定义及说明数组定义及说明3数组创建数组名数组名=new=new 数组元素类型数组元素类型 数组元素个数数组元素个数 说明:(1 1)数组元素个数可以是常量,也可以是变量)数组元素个数可以是常量,也可以是变量。s=new char 20;s=new char 20;或或int nint n20;20;s=new char n;s=new char n;(2 2)声明和创建可合并)声明和创建可合并:char s=new char 20char s=new char 20;5.1.1 数组定义及说明数组定义及说明3数组

5、创建(3 3)基本类型数组的每个元素都是一个基本类型的变量。引用)基本类型数组的每个元素都是一个基本类型的变量。引用类型数组的每个元素都是对象的引用。类型数组的每个元素都是对象的引用。例如:例如:1.1.class Point class Point 2.2.intint x x,y;y;3.3.Point()x=67;y=10;Point()x=67;y=10;4.4.Point(intPoint(int x,x,intint y)y)5.5.this.xthis.x=x;this.yx;this.y=y;=y;6.6.5.1.1 数组定义及说明数组定义及说明3数组创建7.7.Point p

6、 ;/Point p ;/语句组语句组1 18.8.p=new Point 100;/p=new Point 100;/语句组语句组1 19.9.创建了一个创建了一个100100个类型个类型PointPoint的变量。的变量。10.10.注意:注意:并不创建并不创建100100个个PointPoint对象;创建对象;创建100100个对象的工作必须分个对象的工作必须分别完成如下:别完成如下:11.11.p0=new Point();/p0=new Point();/语句组语句组2 212.12.13.13.p99=new Point();/p99=new Point();/语句组语句组2 2执

7、行语句组1P0P0执行语句组执行语句组2 2P0P00 x1250 x1251010y y6767x xP1P10 xAE30 xAE31010y y6767x xP99P990 xAF50 xAF51010y y6767x xP0P0P0P0图图5-1 内存映像图图图5-15-1显示了执行语句组显示了执行语句组1 1、语句组、语句组2 2后的内存映像图后的内存映像图5.1.1 数组定义及说明数组定义及说明4数组元素的使用用来指示单个数组元素的下标必须总是从用来指示单个数组元素的下标必须总是从0 0开始开始任何访问在上述界限之外的数组元素的企图都会引起任何访问在上述界限之外的数组元素的企图都会

8、引起运行时出错。运行时出错。使用length属性的例子如下:1.1.intint list =new list =new intint 10;10;2.2.for(for(intint i=0;i i=0;i list.lengthlist.length;i+);i+)3.3.System.out.println(listiSystem.out.println(listi););5.1.1 数组定义及说明数组定义及说明5数组的初始化当创建一个数组时,每个元素都被初始化。当创建一个数组时,每个元素都被初始化。JavaJava语言允许声明数组时初始化语言允许声明数组时初始化:String name

9、s =Georgianna,Jen,Simon;String names =Georgianna,Jen,Simon;等同等同于:于:1.1.String names ;String names ;2.2.names=new String 3;names=new String 3;3.3.names 0=names 0=GeorgiannaGeorgianna;4.4.names 1=Jen;names 1=Jen;5.5.names 2=Simon;names 2=Simon;5.1.1 数组定义及说明数组定义及说明6多维数组JavaJava没有真正的多维数组没有真正的多维数组N N维数组是

10、维数组是N-1N-1维数组的数组。维数组的数组。以下是矩阵数组例子:以下是矩阵数组例子:1.1.intint twoDimtwoDim =new =new intint 4 4 2.2.twoDim0=new twoDim0=new intint 5;5;3.3.twoDim1=new twoDim1=new intint 5;5;4.4.twoDim2=new twoDim2=new intint 5;5;5.5.twoDim3=new twoDim3=new intint 5;5;5.1.1 数组定义及说明数组定义及说明6多维数组以下是非矩阵数组例子:以下是非矩阵数组例子:1.1.inti

11、nt twoDimtwoDim =new =new intint 4 4 2.2.twoDim0=new twoDim0=new intint 2;2;3.3.twoDim1=new twoDim1=new intint 3;3;4.4.twoDim2=new twoDim2=new intint 4;4;5.5.twoDim3=new twoDim3=new intint 5;5;x x0 00 00 01 11 10 01 11 11 12 22 20 02 21 12 22 22 23 33 30 03 31 13 32 23 33 33 34 4数组列下标数组行下标图5-2 非矩阵数组

12、内存映像图5.1.1 数组定义及说明数组定义及说明7注意事项不允许静态说明数组不允许静态说明数组 下列声明是错误的。下列声明是错误的。1.1.char s5;char s5;/W /W2.2.intint a154;a154;/W/W正确声明为正确声明为:1.1.char s;char s;/R /R2.2.intint a1 ;a1 ;/R/R5.1.1 数组定义及说明数组定义及说明7注意事项数组维数说明顺序应该从高到低数组维数说明顺序应该从高到低下列声明是错误的。下列声明是错误的。int a =new int 4;int a =new int 4;/W /W 正确声明为:正确声明为:int

13、 a =new int4;int a =new int4;/R /R 5.1.1 数组定义及说明数组定义及说明7注意事项数组维数的指定只能出现在数组维数的指定只能出现在newnew运算符之后运算符之后下列声明是错误的。下列声明是错误的。int a 4=new int3 4;int a 4=new int3 4;/W/W正确声明为:正确声明为:int a=new int3 4;int a=new int3 4;/R/RJavaJava数组名是一个引用,当将一个数组名赋值给另数组名是一个引用,当将一个数组名赋值给另一个数组时,实际上是名字的复制一个数组时,实际上是名字的复制。5.1.2 数组应用举

14、例数组应用举例1Java数组名是一个引用【实例实例5-15-1】1.1.public class ArrayExample1public class ArrayExample12.2.public static void public static void main(Stringmain(String argsargs)3.3.intint a=10,20,30,40,b;a=10,20,30,40,b;4.4.b=a;b=a;5.5.for(intfor(int i=0;i i=0;i b.length;ib.length;i+)+)b i=2*b i;b i=2*b i;6.6.for(

15、intfor(int i=0;i i=0;i a.length;ia.length;i+)+)System.out.println(aiSystem.out.println(ai););7.7.8.8.5.1.2 数组应用举例数组应用举例1Java数组名是一个引用运行输出结果为:运行输出结果为:2020404060608080说明:【实例5-1】中将数组b中的元素翻倍后,数组a中的元素也作了相应的变化,这是因为a和b都是引用,在这里指向同一对象。5.1.2 数组应用举例数组应用举例【实例5-2】1.1.class Aclass A2.2.void void square(intsquare(i

16、nt c)c)3.3.intint i;i;4.4.for(ifor(i=0;i=0;ic.length;ic.length;i+)+)cici=cici*cici;5.5.6.6.7.7.public class ArrayExample2public class ArrayExample28.8.public static void public static void main(Stringmain(String argsargs)9.9.A a=new A();A a=new A();10.10.intint b=10,20,30,40;b=10,20,30,40;11.11.a.sq

17、uare(ba.square(b););12.12.for(intfor(int i=0;i i=0;i b.length;ib.length;i+)+)System.out.println(biSystem.out.println(bi););13.13.14.14.5.1.2 数组应用举例数组应用举例【实例5-2】运行输出结果为:运行输出结果为:10010040040090090016001600说明:【实例62】中将数组b中的元素在调用对象a中方法square后发生变化,这是调用方法时传递的是引用,即形参c和实参b在这里指向同一地址单元,这样当执行方法square时c指向单元的内容发生的

18、任何改变必将影响数组b。5.1.2 数组应用举例数组应用举例2数组定义时数组元素大小可以是变量【实例【实例5-35-3】1.1.public class ArrayExample3public class ArrayExample32.2.public static void public static void main(Stringmain(String argsargs)3.3.intint i,Numi,Num=9,j;=9,j;4.4.for(j=1;j=Num;j+)for(j=1;j=Num;j+)5.5.intint b=new b=new intjintj;6.6.for(i

19、for(i=0;i=0;ib.length;ib.length;i+)+)bibi=i+1;=i+1;7.7.for(ifor(i=0;i=0;ib.length;ib.length;i+)+)8.8.System.out.print(i+1)+*+System.out.print(i+1)+*+bibi+=+(i+1)*+=+(i+1)*bibi+);+);9.9.();();10.10.11.11.12.12.5.1.2 数组应用举例数组应用举例2数组定义时数组元素大小可以是变量【实例【实例5-35-3】5.1.2 数组应用举例数组应用举例3二维数组是数组元素为一维数组的数组【实例【实例5

20、-45-4】1.1.public class ArrayExample4public class ArrayExample42.2.public static void public static void main(Stringmain(String argsargs)3.3.intint i,j,Numi,j,Num=9;=9;4.4.intint b=new b=new intNumintNum;5.5.for(j=1;j=Num;j+)for(j=1;j=Num;j+)6.6.7.7.bj-1=new bj-1=new intjintj;8.8.for(ifor(i=1;i=bj-1.

21、length;i+)bj-1i-=1;i=bj-1.length;i+)bj-1i-1=i*j;1=i*j;9.9.5.1.2 数组应用举例数组应用举例3二维数组是数组元素为一维数组的数组【实例【实例5-45-4】10.10.for(j=1;j=for(j=1;j=b.lengthb.length;j+);j+)11.11.12.12.for(ifor(i=1;i=bj-1.length;i+)=1;i=bj-1.length;i+)13.13.System.out.print(iSystem.out.print(i+*+j+=+bj-+*+j+=+bj-1i-1+);1i-1+);14.14

22、.();();15.15.16.16.17.17.5.1.2 数组应用举例数组应用举例3二维数组是数组元素为一维数组的数组【实例【实例5-45-4】说明说明:本例定义了一个不规则二维数组:本例定义了一个不规则二维数组b b,用于存储乘,用于存储乘法表的结果,该二维数组实际上是一个原则为一维数法表的结果,该二维数组实际上是一个原则为一维数组的一维数组,组的一维数组,“b.length=9”“b.length=9”表明数组表明数组b b是元素个数是元素个数为为9 9的一维数组,的一维数组,“b0.length=1”“b0.length=1”表明数组元素表明数组元素b0b0是一个元素个数为是一个元素

23、个数为1 1的一维数组,的一维数组,“b1.length=2”“b1.length=2”表明数组元素表明数组元素b1b1是一个元素个是一个元素个数为数为2 2的一维数组,依此类推,的一维数组,依此类推,“b8.length=1”“b8.length=1”表表明数组元素明数组元素b8b8是一个元素个数为是一个元素个数为9 9的一维数组。的一维数组。5.2 字符串字符串5.2.1 String类5.2.2 StringBuffer类5.2.3 字符串应用举例5.2 字符串字符串字符串指的是字符的序列字符串指的是字符的序列StringString类:用于存储和处理字符串常量类:用于存储和处理字符串常

24、量StringBufferStringBuffer类:用于存储和操作字符串变量类:用于存储和操作字符串变量5.2.1 String类类一般说明:JavaJava使用使用java.langjava.lang包中的包中的StringString类类字符串常量字符串常量:用双引号括住,用双引号括住,Hello World!Hello World!1String类的声明和创建声明字符串声明字符串,如,如String s;String s;创建字符串创建字符串:String(String(字符串常量字符串常量 ););String(char a );/String(char a );/字符数组字符数组a

25、 aString(char a,int startIndex,int numChars);String(char a,int startIndex,int numChars);String s=new String(“hello”);String s=new String(“hello”);或或String s=“hello”;String s=“hello”;5.2.1 String类类2String类构造函数:public Stringpublic String()():该构造函数用于创建一个空的字符串常量。:该构造函数用于创建一个空的字符串常量。String empty=new Stri

26、ng();String empty=new String();等价于使用直接量等价于使用直接量“”“”初始化字符串初始化字符串String empty=“”;String empty=“”;public Stringpublic String(String valueString value):该构造函数用于根据一个已:该构造函数用于根据一个已经存在的字符串常量来创建一个新的字符串常量,该字符串的内经存在的字符串常量来创建一个新的字符串常量,该字符串的内容和已经存在的字符串常量一致。容和已经存在的字符串常量一致。public Stringpublic String(char achar a)或

27、)或String(char a,int String(char a,int startIndex,int numChars)startIndex,int numChars):该构造函数用于根据一个已经存:该构造函数用于根据一个已经存在的字符数组来创建一个新的字符串常量。在的字符数组来创建一个新的字符串常量。5.2.1 String类类2String类构造函数:char ch=H,e,l,l,o;char ch=H,e,l,l,o;String helloString=new String(ch);String helloString=new String(ch);String heString

28、=new String(ch,0,2);String heString=new String(ch,0,2);System.out.println(helloString);System.out.println(helloString);System.out.println(heString);System.out.println(heString);结果为:结果为:HelloHellohehepublic Stringpublic String(StringBuffer bufferStringBuffer buffer):该构造函数用于根据:该构造函数用于根据一个已经存在的一个已经存在的S

29、tringBufferStringBuffer对象来创建一个新的字符串常量。对象来创建一个新的字符串常量。5.2.1 String类类3String类的常用方法获取字符串的长度获取字符串的长度String s=“Hello”;n=s.length();/String s=“Hello”;n=s.length();/结果结果5 5判断字符串前缀或后缀与已知字符串是否相同判断字符串前缀或后缀与已知字符串是否相同 s.startsWith(“he”)/falses.startsWith(“he”)/falseendsWith(“lo”)/trueendsWith(“lo”)/true比较两个字符串比

30、较两个字符串:s=“Hello”s=“Hello”s.equals(“Hello”)/trues.equals(“Hello”)/trues.equals(“hello”)/falses.equals(“hello”)/false5.2.1 String类类3String类的常用方法把字符串转化为数值把字符串转化为数值Integer.parseInt(“4567”);Integer.parseInt(“4567”);Integer.parseLong(“123”);Integer.parseLong(“123”);Float.valueOf(“12.3”).floatValue();Float

31、.valueOf(“12.3”).floatValue();Double.valueOf(“12.3”).doubleValue();Double.valueOf(“12.3”).doubleValue();数值转化为字符串数值转化为字符串String.valueof(123.567);String.valueof(123.567);结果为结果为”123.567”123.567”替换字符、去掉字符串前后空格替换字符、去掉字符串前后空格s.replace(l,m);/ls.replace(l,m);/l被被m m替换替换s.trim();/s.trim();/去掉字符串去掉字符串s s前后空格:

32、前后空格:5.2.1 String类类3String类的常用方法字符串检索字符串检索String s=“Hello”String s=“Hello”;s.indexof(“l”);/s.indexof(“l”);/值是值是2 2s.indexof(“w”,2);/s.indexof(“w”,2);/从第从第2 2位置开始,没有为位置开始,没有为-1-1求字符串的子串求字符串的子串substring(int startpoint),substring(int startpoint),substring(int start,int end),substring(int start,int end)

33、,字符串连接字符串连接String s=“Hello!”String s=“Hello!”;String t=s.concat(“Susan.”)String t=s.concat(“Susan.”);t t的内容为的内容为“Hello!Susan”“Hello!Susan”5.2.1 String类类4字符串与基本数据类型间的转换StringString类提供了以下静态方法获得其它基本数据类型值的字符串类提供了以下静态方法获得其它基本数据类型值的字符串表示:表示:static String valueOf(boolean)static String valueOf(boolean)stati

34、c String valueOf(char)static String valueOf(char)static String valueOf(float)static String valueOf(float)static String valueOf(double)static String valueOf(double)static String valueOf(int)static String valueOf(int)static String valueOf(long)static String valueOf(long)static String valueOf(Object)st

35、atic String valueOf(Object)5.2.1 String类类4字符串与基本数据类型间的转换除除BooleanBoolean类外,每个包装器类都提供了一个静态方法类外,每个包装器类都提供了一个静态方法 parseXXX parseXXX,将字符串对象转换为对应的基本数据类型值,将字符串对象转换为对应的基本数据类型值 byte Byte.parseByte(String)byte Byte.parseByte(String)int Integer.parseInt(String)int Integer.parseInt(String)long Long.parseLong(S

36、tring)long Long.parseLong(String)float Float.parseFloat(String)float Float.parseFloat(String)double Double.parseDouble(String)double Double.parseDouble(String)new Boolean(String).booleanValue()new Boolean(String).booleanValue()5.2.1 String类类5关于String类的补充说明:StringString类创建的字符串对象是不可修改的,也就是说,类创建的字符串对象是

37、不可修改的,也就是说,StringString字符串不能修改、删除或替换字符串中的某个字符串不能修改、删除或替换字符串中的某个字符,即字符,即StringString对象一旦创建,那么实体是不可以再对象一旦创建,那么实体是不可以再发生变化的。发生变化的。5.2.2 StringBuffer类类StringBufferStringBuffer类能创建可修改的字符串序列,也就是类能创建可修改的字符串序列,也就是说,该类的对象的实体的内存空间可以自动的改变大说,该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符串。小,便于存放一个可变的字符串。1StringBuffer类的声明与创

38、建StringBuffer str;/StringBuffer str;/声明声明str=new StringBuffer(“Hello”);/str=new StringBuffer(“Hello”);/创建创建5.2.2 StringBuffer类类2StringBuffer类的构造方法StringBuffer()StringBuffer():建立一个长度为建立一个长度为1616的字符缓冲区的字符缓冲区StringBuffer(int size)StringBuffer(int size):建立一个长度为建立一个长度为sizesize的字的字符缓冲区符缓冲区StringBuffer(Str

39、ing s)StringBuffer(String s):初始化缓冲区内容为给定初始化缓冲区内容为给定的字符串的字符串s s,并另外分配,并另外分配1616个字符空间。当该对象的实个字符空间。当该对象的实体存放的字符序列的指定长度时,实体的容量自动地体存放的字符序列的指定长度时,实体的容量自动地增加,以便存放所增加的字符。增加,以便存放所增加的字符。5.2.2 StringBuffer类类3StringBuffer类的常用方法public int length()public int length():返回字符串的个数返回字符串的个数public int capacity()public in

40、t capacity():返回字符串缓冲区的程度,返回字符串缓冲区的程度,即总的可供分配的字符存储单元。即总的可供分配的字符存储单元。public StringBuffer append()public StringBuffer append():将指定的参数对将指定的参数对象转化为字符串象转化为字符串,附加到原来的字符串对象之后。附加到原来的字符串对象之后。public char charAt(int n)public char charAt(int n):返回字符串中返回字符串中n n位置上位置上的字符,的字符,n n的范围为的范围为0length()-10length()-1。publi

41、c void setCharAt(int n,char ch)public void setCharAt(int n,char ch):设置当设置当前缓冲区第前缓冲区第n n位置的字符值为参数位置的字符值为参数chch指定的值。指定的值。5.2.2 StringBuffer类类3StringBuffer类的常用方法public StringBuffer insert(int index,Object obj)public StringBuffer insert(int index,Object obj):将指定将指定的对象转换为字符串,插入指定的位置。的对象转换为字符串,插入指定的位置。pub

42、lic StringBuffer reverse()public StringBuffer reverse():StringBufferStringBuffer对象使用对象使用reversereverse()()方法将该对象实体中的字符翻转,并返回当前对象的引用。方法将该对象实体中的字符翻转,并返回当前对象的引用。StringBuffer delete(int start,int end)StringBuffer delete(int start,int end):删除从删除从startstart到到end-1end-1的子字符串。的子字符串。StringBuffer replace(int

43、start,int end,String str)StringBuffer replace(int start,int end,String str):将将startstart到到end-1end-1之间的子字符串用之间的子字符串用strstr替换。替换。5.2.3 字符串应用举例字符串应用举例1.String型字符串【实例实例5-55-5】1.1.public class StringExample1 public class StringExample1 2.2.public static void main(String public static void main(String ar

44、gsargs)3.3.String String strstr=new String(A);=new String(A);4.4.(调用前调用前 strstr=+=+strstr););5.5.operate(operate(strstr););6.6.(调用后调用后 strstr=+=+strstr););7.7.8.8.static void static void operate(Stringoperate(String str1)str1)9.9.str1=ABC;str1=ABC;10.10.System.out.println(str1=+str1);System.out.prin

45、tln(str1=+str1);11.11.12.12.5.2.3 字符串应用举例字符串应用举例1.String型字符串【实例实例5-55-5】运行结果为:运行结果为:调用前调用前 str=Astr=Astr1=ABCstr1=ABC调用后调用后 str=Astr=A说明:说明:调用调用operateoperate方法时,传入了引用方法时,传入了引用strstr的拷贝的拷贝str1str1,str1str1指指向原引用向原引用strstr所指向的对象。执行语句所指向的对象。执行语句“str1=ABC;”str1=ABC;”后,后,str1str1指向另一个新的对象指向另一个新的对象(即字符串即

46、字符串“ABC”)ABC”),而引用,而引用strstr所指向的对所指向的对象没有发生改变。象没有发生改变。调用operate方法时执行operate方法时调用operate前A0 xc21str10 x325strA0 x325str调用operate后A0 x325strA0 xc21str10 x325strABC图图5-35-3显示了程序执行中内存映像。显示了程序执行中内存映像。5.2.3 字符串应用举例字符串应用举例2.StringBuffer型字符串【实例【实例5-65-6】1.1.public class StringBufferExample1 public class Str

47、ingBufferExample1 2.2.public static void main(String public static void main(String argsargs)3.3.StringBufferStringBuffer a=new a=new StringBufferStringBuffer(A);(A);4.4.StringBufferStringBuffer b=new b=new StringBufferStringBuffer(B);(B);5.5.operate(operate(a,ba,b););6.6.System.out.println(aSystem.

48、out.println(a=+a+b=+b);=+a+b=+b);7.7.8.8.static void static void operate(StringBufferoperate(StringBuffer x,x,StringBufferStringBuffer y)y)9.9.x.append(yx.append(y););10.10.y=x;y=x;11.11.System.out.println(xSystem.out.println(x=+x+y=+x);=+x+y=+x);12.12.13.13.5.2.3 字符串应用举例字符串应用举例2.StringBuffer型字符串【实例

49、【实例5-65-6】运行结果:运行结果:x=AB y=ABx=AB y=ABa=AB b=Ba=AB b=B说明:说明:调用调用operateoperate方法时,传入了两个引用方法时,传入了两个引用a,ba,b的拷的拷贝贝x,yx,y,这两个,这两个x,yx,y都指向原都指向原a,ba,b引用所指向的对象。引用所指向的对象。x.append(y)x.append(y)对它指向的对象对它指向的对象(即即a a指向的对象指向的对象)进行了进行了操作。而操作。而x=yx=y,只是两个拷贝变量在赋值,并没有影响,只是两个拷贝变量在赋值,并没有影响到原到原b b所指向的对象。所以所指向的对象。所以b

50、b所指向的对象仍然为所指向的对象仍然为B B。调用operate方法时执行operate方法时调用operate前A0 xc21x0 x325aB0 x315y0 x423bAB0 xc21x0 x325aB0 x315y0 x423bB0 x423bA0 x325a调用operate后B0 x423bAB0 x325a5.2.3 字符串应用举例字符串应用举例3算术运算模拟【实例【实例5-75-7】1.1.public class arithSimulateExample1 public class arithSimulateExample1 2.2.public static void ma

51、in(String public static void main(String argsargs)3.3.double data1,data2,result=0;double data1,data2,result=0;4.4.char operate=+;char operate=+;5.5.booleanboolean flag=true;flag=true;6.6.if(if(args.lengthargs.length!=3)!=3)7.7.8.8.System.out.println(System.out.println(参数太少或太多参数太少或太多!););9.9.flag=fal

52、se;flag=false;10.10.3算术运算模拟【实例【实例5-75-7】11.11.elseelse12.12.13.13.flag=false;flag=false;14.14.if(args0.equals(+)if(args0.equals(+)operate=+;flag=true;operate=+;flag=true;15.15.if(args0.equals(-)operate=-if(args0.equals(-)operate=-;flag=true;flag=true;16.16.if(args0.equals(*)if(args0.equals(*)operate

53、=*;flag=true;operate=*;flag=true;17.17.if(args0.equals(/)if(args0.equals(/)operate=/;flag=true;operate=/;flag=true;18.18.if(flagif(flag=false)=false)System.out.println(System.out.println(操作操作符不是符不是:+,-,*,/);/);19.19.3算术运算模拟【实例【实例5-75-7】21.21.if(flag)if(flag)22.22.23.23.data1=Double.parseDouble(args1

54、);data1=Double.parseDouble(args1);24.24.data2=Double.parseDouble(args2);data2=Double.parseDouble(args2);25.25.switch(operateswitch(operate)26.26.27.27.case +:case +:28.28.result=data1+data2;result=data1+data2;29.29.break;break;30.30.case -:case -:31.31.result=data1-data2;result=data1-data2;32.32.bre

55、ak;break;33.33.case *:case *:34.34.result=data1*data2;result=data1*data2;35.35.break;break;3算术运算模拟【实例【实例5-75-7】36.36.case /:case /:37.37.if(data2!=0)if(data2!=0)38.38.result=data1/data2;result=data1/data2;39.39.else flag=false;else flag=false;40.40.break;break;41.41.42.42.if(flag)if(flag)43.43.44.44

56、.System.out.println(data1+args0+data2+=+result);System.out.println(data1+args0+data2+=+result);45.45.46.46.else else System.out.println(System.out.println(被零除被零除!););47.47.48.48.49.49.5.2.3 字符串应用举例字符串应用举例3算术运算模拟【实例【实例5-75-7】说明:说明:该程序是对该程序是对+、-、*、/四种简单运算的模拟,四种简单运算的模拟,在命令行输入类似在命令行输入类似“+1 2”“+1 2”的三个参数,即一个运算的三个参数,即一个运算符和两个操作数,若参数个数多于或少于符和两个操作数,若参数个数多于或少于3 3个,程序会个,程序会出错提示;若参数个数为出错提示;若参数个数为3 3,但运算符不是,但运算符不是+、-、*、/中的一个,程序也会出现错误提示;在进行除法运算中的一个,程序也会出现错误提示;在进行除法运算时,若被除数为时,若被除数为0 0,程序也会出现错误提示。,程序也会出现错误提示。

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

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

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


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