您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Java程序设计(四)
Java程序设计第四章数组、字符串、向量和哈希表山东科技大学信息科学与工程学院2数组字符串字符串缓冲区向量哈希表主要内容3数组(1)数组是一种引用数据类型(参见P24,图2.2),当需要处理较大的同类型数据量时可使用数组。数组对象由相同类型的若干项数据组成,并且包含成员域length,用于表示数组的长度。数组元素的下标从0开始,数组对象占用的内存是连续的。如果数组元素的类型也数组类型,则构成多维数组。publicstaticvoidmain(Stringargs[])4数组(2)示例:具有10个元素的数组对象存储示意length:10A[0]A[1]…A[8]A[9]元素个数10个元素说明:1)其中A为数组变量名;2)通过A.length可以返回数组的长度;int[]A=newint[10];5数组(3)-一维数组(1)数组类型的变量称为数组变量,该变量内存存放了数组对象的引用。数组变量的声明格式如下:数组元素的数据类型[]变量名;数组元素的数据类型变量名[];或其中:数据类型可以是任何一种数据类型。例如:int[]A;intA[];char[]a,b,c;chara[],b[],c[];intname[],k,j;6数组(4)-一维数组(2)数组对象的创建:通过new操作符来创建,格式如下:通过数组初始化语句来创建,格式如下:new数组元素的数据类型[数组长度];数组元素的数据类型变量名[]={元素1,…,元素n};例如:char[]c;c=newchar[5];int[]a=newint[10];例如:char[]c={'a','b','c','d','e'};7数组(5)-一维数组(3)数组元素的访问格式如下:数组变量名[数组元素下标];数组下标∈[0,数组长度-1]例如:char[]c={'a','b','c','d','e'};5c[0]c[1]c[2]c[3]c[4]数组对象数组变量c引用说明:每个数组元素都是一个数据元素类型的变量。8数组(5)-C/C++指针、引用C/C++指针和引用有哪些共同点和区别?9数组(5)-C/C++指针、引用★相同点:1.都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名★区别:1.指针是一个实体,而引用仅是个别名;2.引用使用时无需解引用(*),指针需要解引用;3.引用只能在定义时被初始化一次,之后不可变;指针可变;4.引用没有const,指针有const,const的指针不可变;5.引用不能为空,指针可以为空;6.“sizeof引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小;10数组(5)-Java引用与C/C++区别c/c++的引用,它跟java的引用完全不是一个东西,c/c++的引用是同一块内存的不同名字。而java的引用是指向一个对象,引用本身也占用了内存。通过前面数组的例子,java引用更像是解引用(dereference)了的指针;或者说java中的.操作符某种程度上等价于指针的-操作符。java的引用可以看成是一个功能受限的指针。11数组(6)-一维数组(4)当数组元素类型是引用类型(类、接口或数组类型)时:1)每个数据元素的值也是一个引用,此时元素默认值为null;2)可以使用new操作符为每个数组元素赋值。例如:String[]s=newString[3];s[0]=newString(abc);s[1]=newString(def);s[2]=newString(gh);12数组(6)-一维数组(4)字符串数组s的存储示意图:3引用引用引用数组变量s引用abcdefghString[]s=newString[3];s[0]=newString(abc);s[1]=newString(def);s[2]=newString(gh);3nullnullnull数组变量s引用String[]s=newString[3];3引用nullnull数组变量s引用abcString[]s=newString[3];s[0]=newString(abc);13数组(7)-多维数组(1)多维数组变量的声明格式如下:数组元素的数据类型[][][]……[]变量名;数组元素的数据类型变量名[][][]……[];或其中:方括号的个数就是数组的维数。例如:int[][]matrix;intmatrix[][];14数组(8)-多维数组(2)多维数组对象的创建有3种形式,具体如下:1)直接创建多维数组,格式如下:例如:new数组元素的数据类型[第n维元素个数]……[第1维元素个数];int[][]matrix;matrix=newint[3][2]其中:数组a包含3个元素,每个元素都是包含2个元素的一维数组。matrix[0][0]matrix[1][0]matrix[2][0]matrix[0][1]matrix[1][1]matrix[2][1]行的下标值列的下标值15数组(9)-多维数组(3)多维数组对象的创建有3种形式,具体如下:2)从高维开始逐维地创建多维数组,格式如下:new数组元素的数据类型[第n维元素个数][]……[];共n-1个new数组元素的数据类型[第n-1维元素个数][]……[];共n-2个new数组元素的数据类型[第1维元素个数];第n维第n-1维第1维16数组(10)-多维数组(4)多维数组对象的创建有3种形式,具体如下:从高维开始逐维地创建多维数组示例1:int[][]matrix;matrix=newint[2][];matrix[0]=newint[2];matrix[1]=newint[2];等价int[][]matrix;matrix=newint[2][2];17数组(11)-多维数组(5)多维数组对象的创建有3种形式,具体如下:从高维开始逐维地创建多维数组示例2:int[][][]matrix3D;//声明三维数组变量matrix3D=newint[3][][];//创建第3维,3个元素matrix3D[0]=newint[2][];//创建第2维,2个元素matrix3D[1]=newint[3][];matrix3D[2]=newint[2][];matrix3D[0][0]=newint[2];//创建第1维matrix3D[0][1]=newint[3];matrix3D[1][0]=newint[4];matrix3D[1][1]=newint[5];matrix3D[1][2]=newint[7];matrix3D[2][0]=newint[2];matrix3D[2][1]=newint[3];18数组(12)-多维数组(6)多维数组对象的创建有3种形式,具体如下:3)采用数组初始化语句创建数组对象(1维格式):数组元素的数据类型[]变量名={元素1,元素2,……,元素n};数组元素的数据类型变量名[]={元素1,元素2,……,元素n};或说明:1)二维则可将上述i(i=1,2,……,n)替换成i1,i2,……im。2)二维数组的每一行可以具有不同的列数。3)多维依次类推,逐一替换。19数组(13)-多维数组(7)多维数组对象的创建有3种形式,具体如下:采用数组初始化语句创建数组对象示例:int[][]matrix={{1,2},{3,4}}matrix[0][0]=1matrix[0][1]=2matrix[1][0]=3matrix[1][1]=4String[][]matrixString={{newString(abcd),newString(efg)},{newString(hi),newString(j)}};20数组(14)数组应用实例(J_Grid15.java,P121):求解和为15的棋盘游戏问题,即将从1到9的九个数不重复地填入3╳3的棋盘,使得各行、各列以及两个对角线上的三个数之和均为15。21数组字符串字符串缓冲区向量哈希表主要内容22字符串(1)字符序列可以存储在字符数组中,也可以存储在字符串和字符串缓冲区对象中。字符串对象指java.lang.String对象,与C语言不同的是,字符串对象并不与字符数组等价,也没有length成员域。字符串对象一经创建,则其所包含的字符序列不能变更。字符串缓冲区对象指java.lang.StringBuffer对象,它与String对象类似,但是所包含的字符序列可以变更。23字符串包含一个字符序列,与其他语言不同,字符串无需特殊字符来界定首部和尾部。字符串对象构建有4种方法:1.字符串直接量,例如“abcde”等;2.通过java.lang.String的构造方法(P126):字符串(2)newString();//构建一个空串,空串不是nullnewString(byte[]bytes);newString(char[]value);newString(Stringoriginal);//original不能为nullnewString(StringBufferbuffer);24字符串对象构建有4种方法:3.通过java.lang.String的成员方法(P126):字符串(3)publicstaticStringvalueOf(booleanb)publicstaticStringvalueOf(charc)publicstaticStringvalueOf(inti)publicstaticStringvalueOf(longl)publicstaticStringvalueOf(floatf)publicstaticStringvalueOf(doubled)publicstaticStringvalueOf(Objectobj)25通过java.lang.String的成员方法构建字符串对象示例:字符串(4)Strings1=String.valueOf(true);Strings2=String.valueOf(12);Objectobj=null;Strings3=String.valueOf(obj);s1=trues2=12s3=null说明:1)如果obj不为null,则s3为调用obj.toString()返回的结果;2)每个类都含有成员方法toString();3)上述语句不能写成:Strings4=String.valueOf(null);26字符串对象构建有4种方法:3)通过java.lang.String的成员方法(续:P127-P128):字符串(6)publicStringconcat(Stringstr)//字符串拼接publicStringreplace(charoldChar,charnewChar)//替换publicStringtoLowerCase()//小写转换publicStringtoUpperCase()//大写转换publicStringtrim()//去除首尾空白符,这里空白符指定义在‘\u0000’和‘\u0020’之间的字符。publicStringsubstring(intbeginIndex)//提取子串,注意索引从0开始publicStringsubstring(intbeginIndex,intendIndex)27字符串对象构建有4种方法:3.通过java.lang.String的成员方法(续:P129):字符串(5)publicstaticStringformat(Stringformat,Object…args)//格式化字符串其中:1)format是格式字符串,其基本形式为:%[参数索引$][宽度][.精度]变换类型2)Object是参数列表。例如:Strings1=String.format(清华大学成立于%1$d年,1911);//s1=“清华大学成立于1911年”,d表示
本文标题:Java程序设计(四)
链接地址:https://www.777doc.com/doc-2881243 .html