第四章数组与字符串.ppt
《第四章数组与字符串.ppt》由会员分享,可在线阅读,更多相关《第四章数组与字符串.ppt(38页珍藏版)》请在三一办公上搜索。
1、,第四章 数组与字符串,概念,数组是一组同类型的变量或对象的集合数组的类型可以是基本类型,或类和接口数组中每个元素的类型相同引用数组元素通过数组名下标数组下标(数组的索引)从0开始数组是一种特殊的对象(Object)定义类型(声明)创建数组(分配内存空间):new一维数组、多维数组,一维数组,一维数组的元素只有一个下标变量例:A1,c3一维数组的声明方法1:类型 数组名;String args;int a;double amount;char c;方法2:类型 数组名;String args;int a;double amount;char c;注意类型是数组中元素的数据类型(基本和构造类型)
2、数组名是一个标识符数组声明后不能被访问,因未为数组元素分配内存空间,double d;System.out.println(d0);,一维数组,数组的创建用new来创建数组为数组元素分配内存空间,并对数组元素进行初始化格式:数组名=new 类型数组长度例:a=new int3;声明和创建的联用:int a=new int3;默认赋初值整型初值为0 int i=new int3;实型初值为0.0 float f=new float3;布尔型初值为false boolean b=new boolean3;,一维数组,一维数组的初始化方式一:在声明数组的同时对数组初始化格式:类型 数组名=元素1,元
3、素2;int a=1,2,3,4,5;方式二:声明和创建数组后用new对数组初始化形式如下:数组名=new 类型标识符数组长度例如:int intArray;intArray=new int3一维数组的引用 数组名下标 下标可以为整型常数或表达式Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度,【示例4-1】ArrayTest.java演示Java语法定义数组和引用数组元素的方式,public class ArrayTest public static void main(String args)int
4、 i;int a=new int5;for(i=0;i=0;i-)System.out.println(a+i+=+ai);,程序运行结果:a4=4 a3=3 a2=2 a1=1 a0=0,【示例4-2】classFibonacci.java,public class ClassFibonacci public static void main(String args)int i;int f=new int10;f0=f1=1;for(i=2;i10;i+)fi=fi-1+fi-2;for(i=1;i=10;i+)System.out.println(F+i+=+fi-1);,程序运行结果:F
5、1=1 F2=1 F3=2 F4=3 F5=5 F6=8 F7=13 F8=21 F9=34 F10=55,多维数组,数组的数组Arrays of Arrays例:表格(行和列)以二维数组为例,二维数组,二维数组的声明类型 数组名,例 int a;数组声明后不能被访问,因未为数组元素分配内存空间二维数组的创建方法一:直接分配空间例 int a=new int23;a00 a01 a02 a10 a11 a12两个一维数组,每个数组包含3个元素,二维数组,二维数组的创建方法二:从最高维开始,为每一维分配空间例 int c=new int2;c0=new int4;c1=new int3;c00
6、c01 c02 c03 c10 c11 c12 注:为数组分配空间需指定维数大小,至少最高维(最左边)大小错误:int b=new int;,二维数组,二维数组的初始化每个元素单独进行赋值class Test public static void main(String args)int a=new int33;a00=1;a11=1;a22=1;System.out.println(“数组a:”);for(int i=0;i a.length;i+)for(int j=0;jai.length;j+)System.out.print(aij+“”);System.out.println();
7、,最高维数组长度,1 0 00 1 00 0 1,二维数组,二维数组的初始化声明数组的同时初始化 例 int a=1,2,3,3,4,5;a00=1 a01=2 a02=3 a10=3 a11=4 a12=5对数组元素的引用数组名下标1 下标2下标为非负的整型常数,【示例4-3】MatrixMultiply.java,public class MatrixMultiply public static void main(String args)int i,j,k;int a=new int23;int b=1,5,2,8,5,9,10,-3,2,7,-5,-18;int c=new int24
8、;for(i=0;i2;i+)for(j=0;j3;j+)aij=(i+1)*(j+2);for(i=0;i2;i+)for(j=0;j4;j+)cij=0;for(k=0;k3;k+)cij+=aik*bkj;/矩阵相乘,【示例4-3】MatrixMultiply.java,System.out.println(n*MatrixA*);for(i=0;i2;i+)for(j=0;j3;j+)System.out.print(aij+);System.out.println();System.out.println(n*MatrixB*);for(i=0;i3;i+)for(j=0;j4;j+
9、)System.out.print(bij+);System.out.println();System.out.println(n*MatrixC*);for(i=0;i2;i+)for(j=0;j4;j+)System.out.print(cij+);System.out.println();,程序运行结果:*MatrixA*2 3 4 4 6 8*MatrixB*1 5 2 8 5 9 10-3 2 7-5-18*MatrixC*25 65 14-65 50 130 28-130,【示例4-4】TwoArrayAgain.java】不规则数组示例,public class TwoArray
10、Againpublic static void main(String args)int twoArray=new int4;/声明二维数组twoArray0=new int1;/定义每一行twoArray1=new int2;twoArray2=new int3;twoArray3=new int4;int i,j,k=0;for(i=0;itwoArray.length;i+)for(j=0;jtwoArrayi.length;j+,k+)twoArray ij=k;for(i=0;itwoArray.length;i+)for(j=0;jtwoArrayi.length;j+)Syste
11、m.out.print(twoArrayij+);System.out.println();,程序运行结果:0 1 2 3 4 5 6 7 8 9,对数组对象的操作(Arrays)java.util.Arrays,全部是静态方法public static int binarySearch(type a,type key)public static int binarySearch(type a,int fromIndex,int toIndex,type key)public static boolean equals(type a,type a2)public static void fil
12、l(type a,type val)public static void fill(type a,int fromIndex,int toIndex,type val)public static void sort(type a)public static void sort(type a,int fromIndex,int toIndex)public static void type copyOf(type original,int newLength)public static void type copyOfRange(type original,int from,int to)Pub
13、lic static String toString(type a),boolean,char,type,short,int,long,double,floatObject,注意:Arrays类处于java.util包下,为了在程序中使用Arrays类,必须在程序中导入java.util.Arrays类,示例4-5】UsingArrays.javaimport java.util.*;public class UsingArrays public static void main(String args)/定义一个a数组int a=new int3,4,5,6;/定义一个a2数组int a2=
14、new int3,4,5,6;/a数组和a2数组的长度相等,每个元素依次相等,将输出trueSystem.out.println(a数组和a2数组是否相等:+Arrays.equals(a,a2);/通过复制a数组,生成一个新的b数组int b=Arrays.copyOf(a,6);System.out.println(a数组和b数组是否相等:+Arrays.equals(a,b);/输出b数组的元素,将输出3,4,5,6,0,0System.out.println(b数组的元素为:+Arrays.toString(b);/将b数组的第3个元素(包括)到第5个元素(不包括)赋为1Arrays.
15、fill(b,2,4,1);/fill方法可一次对多个数组元素进行批量赋值/输出b数组的元素,将输出3,4,1,1,0,0System.out.println(b数组的元素为:+Arrays.toString(b);/对b数组进行排序Arrays.sort(b);/输出b数组的元素,将输出0,0,1,1,3,4System.out.println(b数组的元素为:+Arrays.toString(b);,程序运行结果:a数组和a2数组是否相等:truea数组和b数组是否相等:falseb数组的元素为:3,4,5,6,0,0b数组的元素为:3,4,1,1,0,0b数组的元素为:0,0,1,1,3
16、,4,不规则数组-Java语法支持方便地构造一个“不规则”数组,即数组的每一行有不同的长度。,【示例4-4】TwoArrayAgain.javapublic class TwoArrayAgainpublic static void main(String args)int twoArray=new int4;/声明二维数组twoArray0=new int1;/定义每一行twoArray1=new int2;twoArray2=new int3;twoArray3=new int4;int i,j,k=0;for(i=0;itwoArray.length;i+)for(j=0;jtwoArr
17、ayi.length;j+,k+)twoArray ij=k;for(i=0;itwoArray.length;i+)for(j=0;jtwoArrayi.length;j+)System.out.print(twoArrayij+);System.out.println();,程序运行结果:0 1 2 3 4 5 6 7 8 9,字符串操作类,java.lang.String类字符串/字符序列构造方法public String()public String(byte bytes)public String(bytebytes,intoffset,intcount)public String(
18、char value)public String(charvalue,intoffset,intcount)public String(Stringoriginal),4.2.1 String类,当创建一个String对象时,被创建的字符串是不能被改变的。每次需要改变字符串时都要创建一个新的String对象来保存新的内容。原始的字符串不变。一个字符串对象一旦被配置,它的内容就是固定不可变的.例如:String str=hello,Java;,4.2.1 String类,String str=Hello;str=Java;。,在Java 中,使用“=”将一个字符串对象指定给一个变量名称,其意义为
19、改变该名称所引用的对象,原来被引用的字符串对象若没有其他名称来引用它,就会在适当的时候被Java 的“垃圾回收”(Garbage Collection)机制回收。在Java 执行时会维护一个String 池(Pool)。对于一些可以共享的字符串对象,会先在String 池中查找是否存在相同的String 内容(字符相同),如果有就直接返回,而不是直接创造一个新的String 对象,以减少内存的耗用。如果在程序中使用下面的方式来声明,则实际上是指向同一个字符串对象:String str1=ByTheWay;String str2=ByTheWay;System.out.println(str1=
20、str2);,如果要比较两个字符串对象的字符值是否相同,要使用equals()方法,以下的写法才会显示true 的结果:String str1=new String(caterpillar);String str2=new String(caterpillar);System.out.println(str1.equals(str2);,1.String对象的创建,(1)String(),默认构造方法,无参数 String s1=new String();(2)String(char chars),传入字符数组 char myChars=a,b,c;String s2=new String(m
21、yChars)/使用字符串“abc”初始化s2(3)String(char chars,int startIndex,int numChars),传入一个字符数组,从指定下标位置开始获取指定个数的字符,用这些字符来初始化字符串变量。char myChars=h,e,l,l,o;String s3=new String(myChars,1,3);/使用字符串“ell”初始化s3(4)String(String strObj),传入另一个字符串对象,用该字符串对象的内容初始化 String s4=new String(s3);/这是s4也是“ell”了。(5)String(byte asciiCh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 数组 字符串
链接地址:https://www.31ppt.com/p-5665977.html