《Java中的数组和字符串.ppt》由会员分享,可在线阅读,更多相关《Java中的数组和字符串.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九讲第九讲Java中的数组和字符串中的数组和字符串本讲主要内容:本讲主要内容:l lJava中的数组中的数组l lString字符串字符串l lStringBuffer字符串字符串l lJava中命令行参数的用法中命令行参数的用法一、一、Java中的数组中的数组数组的基本认识n n“数组是相同类型的、用一个标识符名称封装在一起的一数组是相同类型的、用一个标识符名称封装在一起的一个对象序列或基本类型数据序列。个对象序列或基本类型数据序列。”n n数组的基本认识数组的基本认识 数组是一种引用数据类型,是对象,要先创建后存取。数组是一种引用数据类型,是对象,要先创建后存取。一个数组可存储相关的、同
2、一种数据类型的数据。其中元一个数组可存储相关的、同一种数据类型的数据。其中元素可以是简单数据也可以是对象数据。素可以是简单数据也可以是对象数据。数组中还特别含有成员变量数组中还特别含有成员变量lengthlength,用于测得数组的尺寸。,用于测得数组的尺寸。数组的长度在创建数组时确定,一旦创建,数组即固定尺数组的长度在创建数组时确定,一旦创建,数组即固定尺寸寸数组的声明和创建n n数组的声明 类型类型 数组名数组名;如:int list;/也可以写成int list;说明:数组可以变界定义。int n=10;int d=new intn;数组的声明和创建(续)n n数组的创建 数组名数组名=
3、new 类型类型数组尺寸数组尺寸;数组名数组名=new类型类型 元素元素1,元素元素2元素元素n;其中:new类型 可以省略。如:int a=new int12;int a=1,2,3,4,5;String daysOfWeek=Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday;数组的声明和创建(续)n n例程阅读 class TestArray class TestArray public static void main(String args)public static void main(String args)intin
4、t a=1,2,3,4,5;a=1,2,3,4,5;for(int i=0;ia.length;i+)for(int i=0;ia.length;i+)ai*=2;ai*=2;System.out.print(ai+t);System.out.print(ai+t);n n结论:结论:数组的下标下界为数组的下标下界为0 0。对数组各元素的访问通过循环进行。对数组各元素的访问通过循环进行。数组的声明和创建(续)n n思考?1.数组是对象吗?2.数组对象中哪个成员变量可以测得数组中元素个数?3.如果定义int b=new int10;,b中的数组元素分别是?4.数组中的数据可否是不同的类型?5.数
5、组中只能存放基本类型的数据吗?数组的初始化n n声明和创建可以一起完成,这即为数组的初始化。(1)(1)可以在初始化时,给数组元素直接赋值。可以在初始化时,给数组元素直接赋值。intint a=1,2,3,4,5;a=1,2,3,4,5;int int a=new int5;a=new int5;a=1,2,3,4,5;a=1,2,3,4,5;(2)(2)数组元素的默认值情况同对象的成员变量:数组元素的默认值情况同对象的成员变量:数值型数值型-0-0 char-char-空字符空字符(ASCII(ASCII码值为码值为0)0)Object-null Object-null boolean-fa
6、lse boolean-false(3)(3)如果没进行初始化,则需要单个元素进行输入了如果没进行初始化,则需要单个元素进行输入了数组的使用n n对数组元素的访问:对数组元素的访问:数组名数组名数组名数组名indexindexn n练习:设计一个练习:设计一个FeiFei类类,数组数组f f,可构造菲波那契数列的前,可构造菲波那契数列的前2020项置入项置入数组中,提供输出数组中,提供输出f f数组的数组的printFeiprintFei方法。方法。class Fei class Fei int f;int f;Fei(int x)Fei(int x)f=new intx;f=new intx
7、;f0=f1=1;f0=f1=1;for(int i=2;if.length;i+)for(int i=2;if.length;i+)fi=fi-1+fi-2;fi=fi-1+fi-2;void printFei()void printFei()for(int i=0;if.length;i+)for(int i=0;if.length;i+)System.out.print(fi+t);System.out.print(fi+t);class Testpublic static void main(String args)new Fei(20).printFei();数组的使用(续)n n数
8、组名可以重指向数组名是数组对象的引用,数组名可以重定向,指向数组名是数组对象的引用,数组名可以重定向,指向另一个数组。另一个数组。n n例:阅读程序,分析程序运行结果,理解数组名重定例:阅读程序,分析程序运行结果,理解数组名重定向的意义。向的意义。class A class A public static void main(String a)public static void main(String a)int b=0,1;int b=0,1;int c=1,2,3,4;int c=1,2,3,4;b=c;b=c;for(int i=0;ib.length;i+)for(int i=0;i
9、b.length;i+)System.out.println(bi);System.out.println(bi);数组的使用(续)n n数组元素为对象数组元素为对象:每个数组元素都是对象引用。每个数组元素都是对象引用。n n例:阅读和分析程序,扩展对数组的认识。例:阅读和分析程序,扩展对数组的认识。class Circle class Circle double r;double r;Circle(double r)this.r=r;Circle(double r)this.r=r;double getS()return Math.round(Math.PI*r*r*100)/100.;do
10、uble getS()return Math.round(Math.PI*r*r*100)/100.;class Test class Test public static void main(String aa)public static void main(String aa)Circle cc=new Circle5;Circle cc=new Circle5;double a=1,2,2.5,3.5,6;double a=1,2,2.5,3.5,6;for(int i=0;i5;i+)for(int i=0;i5;i+)cci=new Circle(ai);cci=new Circle
11、(ai);System.out.println(cci.r+-+cci.getS();System.out.println(cci.r+-+cci.getS();数组的使用(续)n n思考?1.1.数组元素可以是对象吗?数组元素可以是对象吗?2.2.数组元素是对象的数组如何定义?数组元素是对象的数组如何定义?3.3.数组可以是对象的成员吗?数组可以是对象的成员吗?4.4.如何访问对象中的数组元素?如何访问对象中的数组元素?二、二、String和和StringBuffer字符串字符串字符串 字符串是有序的字符序列。如字符串是有序的字符序列。如”Hello”Hello”字符串常量以双引号为起止符。
12、字符串常量以双引号为起止符。字符串可通过字符串可通过length()length()方法测得串长。方法测得串长。如:如:int l=”a try”.length();int l=”a try”.length();字符串中若要包含引号、换行符,就需要用到特殊字符串中若要包含引号、换行符,就需要用到特殊字符。列表如下:字符。列表如下:如:如:String s=”Li say:nt”Its a try.”;String s=”Li say:nt”Its a try.”;String字符串n n构造字符串实例对象的方法 直接赋字符串值。直接赋字符串值。如:如:String s=”java”;Strin
13、g s=”java”;new String(new String(参数列表参数列表)。如:如:String s1=new String();String s1=new String();String s2=new String(“java”);String s2=new String(“java”);常用的字符串相关方法n n对字符串内字符的访问 public char charAt(int index)从调用方法的字符串对象中返回序数为从调用方法的字符串对象中返回序数为indexindex的字符。的字符。class TestString public static void main(Str
14、ing aa)String s=Hello world;for(int i=0;is.length();i+)System.out.print(s.charAt(i)+);所有的字符串实例对象都在一个所有的字符串实例对象都在一个“字符串池字符串池”中。中。字符串变量是指向字符串对象的引用。字符串变量是指向字符串对象的引用。字符串常量也是字符串实例对象的一个引用。字符串常量也是字符串实例对象的一个引用。常用的字符串相关方法(续)n n字符串比较 equals方法 public boolean equals(String anotherString)public boolean equals(St
15、ring anotherString)作用:比较两个字符串值是否相等。作用:比较两个字符串值是否相等。class TestEqual class TestEqual public static void main(String aa)public static void main(String aa)String s1=new String(abc);String s1=new String(abc);String s2=new String(abc);String s2=new String(abc);if(s1.equals(s2)System.out.println(equal);if(
16、s1.equals(s2)System.out.println(equal);else System.out.println(not equal);else System.out.println(not equal);常用的字符串相关方法(续)n n字符串比较(续)=作用:比较两个字符串对象是否为同一个。作用:比较两个字符串对象是否为同一个。class TestEqual class TestEqual public static void main(String aa)public static void main(String aa)String s1=new String(abc);St
17、ring s1=new String(abc);String s2=new String(abc);String s2=new String(abc);if(s1=s2)System.out.println(equal);if(s1=s2)System.out.println(equal);else System.out.println(not equal);else System.out.println(not equal);常用的字符串相关方法(续)n n字符串比较(续)compareTo方法 public int compareTo(String anotherString)作用:比较两
18、个字符串的值大小作用:比较两个字符串的值大小如:如:String aa=”abc”,bb=”ABC”;String aa=”abc”,bb=”ABC”;pareTo(bb)pareTo(bb)其值为正,其值为正,aaaa大于大于bbbb;其值为负,;其值为负,aaaa小于小于bbbb;其值为零,;其值为零,aaaa等于等于bbbb常用的字符串相关方法(续)例:分析程序运行结果例:分析程序运行结果例:分析程序运行结果例:分析程序运行结果 class StringTest class StringTest public static void main(String aa)public stati
19、c void main(String aa)String s1=new String(a try);String s1=new String(a try);String s2=a try;String s2=a try;String s3=s1;String s3=s1;System.out.println(s1=s2);System.out.println(s1=s2);System.out.println(s2=s3);System.out.println(s2=s3);System.out.println(s1=s3);System.out.println(s1=s3);System.o
20、ut.println(s1.equals(s2);System.out.println(s1.equals(s2);System.out.println(s2.equals(s3);System.out.println(s2.equals(s3);System.out.println(s3.equals(s1);System.out.println(s3.equals(s1);System.out.println(pareTo(s2);System.out.println(pareTo(s2);System.out.println(pareTo(s3);System.out.println(p
21、areTo(s3);System.out.println(pareTo(s1);System.out.println(pareTo(s1);常用的字符串相关方法(续)n n思考?1.Java1.Java中的字符串是对象吗?中的字符串是对象吗?2.new String(“abc”)2.new String(“abc”)是否总是会在字符串池中新建字符串是否总是会在字符串池中新建字符串对象?对象?3.3.测试字符串长度的方法是?测试字符串长度的方法是?4.4.如何比较两个字符串对象是否有相同的值?如何比较两个字符串对象是否有相同的值?5.5.如何比较两个字符串对象是否为同一对象?如何比较两个字符串对
22、象是否为同一对象?常用的字符串相关方法(续)n n字符串与数值的转换字符串与数值的转换常用的字符串相关方法(续)n n返回字符或子字符串位置的方法返回字符或子字符串位置的方法常用的字符串相关方法(续)n n其他常用方法 public byte getBytes()将字符串解码为字节序列,并存到一个字节数组中。将字符串解码为字节序列,并存到一个字节数组中。public boolean startsWith(String prefix)测试此字符串是否以指定前缀开始。测试此字符串是否以指定前缀开始。public String trim():去除字符串前尾空格。去除字符串前尾空格。public St
23、ring substring(int beginIndex,int endIndex)返回一个子字符串。返回一个子字符串。StringBuffer字符串 n nStringString对象一经创建,不能对其内容修改。消耗资源。对象一经创建,不能对其内容修改。消耗资源。n nStringBufferStringBuffer对象是可变的字符串,可用于创建和操作对象是可变的字符串,可用于创建和操作动态字符串信息。为该对象分配的内存会自动扩展以动态字符串信息。为该对象分配的内存会自动扩展以容纳新增的文本。容纳新增的文本。n n例程阅读例程阅读 class StringBufferEditTest cl
24、ass StringBufferEditTest public static void main(String args)public static void main(String args)String a=“aaa”;String a=“aaa”;String b=“bbb”;String b=“bbb”;a=a+b;a=a+b;StringBuffer s=new StringBuffer(Hello);StringBuffer s=new StringBuffer(Hello);s.append(n);s.append(n);s.append(How are you?);s.appe
25、nd(How are you?);System.out.println(s);System.out.println(s);StringBuffer字符串(续)n nStringBuffer对象创建 有三种方法:使用初始化字符串、设定大小以及使用有三种方法:使用初始化字符串、设定大小以及使用默认构造函数:默认构造函数:new StringBuffer(String s);new StringBuffer(String s);new StringBuffer(int size);new StringBuffer(int size);new StringBuffer();new StringBuff
26、er();/用默认的构造方法时默认容量为用默认的构造方法时默认容量为1616个字符。个字符。StringBuffer字符串(续)n nStringBuffer类的常用方法(1)(1)转换成转换成String String public void toString()public void toString()(2)(2)添加数据到对象添加数据到对象 public void appendpublic void append()在字符串末尾追加数据(有多个重载版本)在字符串末尾追加数据(有多个重载版本)public void insert(int offset,public void insert
27、(int offset,插入数据插入数据插入数据插入数据)在字符串指定位置插入数据(有多个重载版本)。在字符串指定位置插入数据(有多个重载版本)。StringBuffer字符串(续)n nStringBuffer类的常用方法(续)(3)(3)删除和替代删除和替代 public void delete(int start,int end)public void delete(int start,int end)删除指定位置上的子字符串。删除指定位置上的子字符串。public void replace(int start,int end,String s)public void replace(i
28、nt start,int end,String s)以指定字符串替换指定位置上的字符。以指定字符串替换指定位置上的字符。StringBuffer字符串(续)n nStringBuffer类的常用方法(续)(4)(4)返回字符或子字符串位置的方法返回字符或子字符串位置的方法 public int indexOf(int ch)public int indexOf(int ch)public int lastIndexOf(int ch)public int lastIndexOf(int ch)public int indexOf(String s)public int indexOf(Stri
29、ng s)public int lastIndexOf(String s)public int lastIndexOf(String s)StringBuffer字符串(续)n nStringBuffer类的常用方法(续)(5)(5)单个字符处理单个字符处理 public char charAt(int index)public char charAt(int index)返回字符串中的单个字符。返回字符串中的单个字符。public void setCharAt(int index,char ch)public void setCharAt(int index,char ch)为字符串中的单个
30、字符赋值或进行替换。为字符串中的单个字符赋值或进行替换。public StringBuffer deleteCharAt(int index)public StringBuffer deleteCharAt(int index)删除指定位置的字符删除指定位置的字符 StringBuffer字符串(续)n nStringBuffer类的常用方法(续)(6)(6)字符串的倒序处理字符串的倒序处理 public StringBuffer reverse()public StringBuffer reverse()(7)(7)StringBufferStringBuffer实例的容量实例的容量 pub
31、lic int length()public int length():测量字符序列长度:测量字符序列长度:测量字符序列长度:测量字符序列长度 public int capacity()public int capacity():占用内存尺寸(实例容量):占用内存尺寸(实例容量):占用内存尺寸(实例容量):占用内存尺寸(实例容量)StringBuffer字符串(续)n n练习:用StringBuffer,按程序运行结果对应的步骤编程。StringBuffer字符串(续)n n思考?1.String1.String与与StringBufferStringBuffer区别在哪?区别在哪?2.2.怎
32、样由怎样由StringString字符串对象得到字符串对象得到StringBufferStringBuffer对象?对象?3.StringBuffer3.StringBuffer字符串如何转为字符串如何转为StringString字符串?字符串?4.4.如何在如何在StringBufferStringBuffer字符串末尾进行添加数据?字符串末尾进行添加数据?5.5.如何在如何在StringBufferStringBuffer字符串中插入?字符串中插入?6.6.如何从如何从StringBufferStringBuffer字符串中删除子串?字符串中删除子串?三、三、Java中命令行参数的用法中命
33、令行参数的用法Java程序的命令行参数 n nmainmain方法可接收字符串数组,作为运行时给出的数据。方法可接收字符串数组,作为运行时给出的数据。n nmainmain方法中的参数方法中的参数 public static void main(String args)public static void main(String args)String argsString args字符串数组字符串数组 args0args0第一个参数第一个参数 args1args1第二个参数第二个参数 n n带参数的程序执行带参数的程序执行 java java 类名类名 Java程序的命令行参数(续)n n例
34、:设计一个加法器例:设计一个加法器AddAdd,能对命令行中提供的整数值进,能对命令行中提供的整数值进行累加。如:行累加。如:java Add 1 5 7java Add 1 5 7,能获得答案,能获得答案1313。class Add class Add public static void main(String args)public static void main(String args)int sum=0;int sum=0;for(int i=0;iargs.length;i+)for(int i=0;iargs.length;i+)sum+=Integer.parseInt(argsi);sum+=Integer.parseInt(argsi);System.out.println(sum);System.out.println(sum);Java程序的命令行参数(续)n n练习:设计自然数累加程序(类名Sum),当java Sum 68时可求自然数加到68的和。