第3章JAVA数组向量字符串(12级)_第1页
第3章JAVA数组向量字符串(12级)_第2页
第3章JAVA数组向量字符串(12级)_第3页
第3章JAVA数组向量字符串(12级)_第4页
第3章JAVA数组向量字符串(12级)_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章字符串、数组和向量字符串学习的任务从一个带有路径的文件名中分离出文件名和路径C:\ProgramFiles\Jdk\readme.html字符串在Java中,字符串被当作对象来处理。字符串分类字符串常量创建之后不能再修改。用String类来创建字符串常量。字符串变量创建之后可以做修改。一般用StringBuffer类来创建。String类和StringBuffer类都在java.lang包中。类String字符串定义可以用字符串常量直接初始化一个String对象

Strings="HelloWorld";通过构造方法构造方法说明String()它将创建一个空字符串 String(Stringoriginal)根据指定字符串,创建一个新字符串String(char[]value)根据字符数组构造一个新字符串String(byte[]value)根据指定的字节数组,新建一个字符串charchars[]={‘a’,‘b’,‘c’}; Strings=newString(chars);Strings=newString(“hello”);或:Strings=“hello”;Strings=newString();bytebytestr[]={97,98,99};Strings=newString(bytestr);字符串变量和普通变量的区别String构造方法的使用举例

publicstaticvoidmain(String[]args){Strings,s1,s2,s3,s4,s5,s6,s7;bytebyteArray[]

={(byte)'J',(byte)'a',(byte)'v',(byte)'a'};charcharArray[]={'程','序','设','计','课','程'};StringBufferss=newStringBuffer("欢迎");s=newString("Hello!");s1=newString();s2=newString(s); s3=newString(charArray);

s4=newString(charArray,2,4);

s5=newString(byteArray);s6=newString(byteArray,0,1);}}Hello!Hello!程序设计课程设计课程JavaJ字符串长度由length()

方法确定语法publicintlength();返回字符串中的字符数String的常用方法—字符串长度Stringname="JohnSmith";System.out.println(name.length());String的常用方法—字符串比较字符串变量1字符串变量2字符串变量1字符串变量2由equals()方法确定检查字符串变量指向的字符串是否相等同一个对象用==运算符检查检查字符串变量是否指向同一个字符串对象

publicclassStringCompare{publicstaticvoidmain(String[]args){ Strings1="abc"; Strings2="abcd";

System.out.println(s1==s2); System.out.println(s1.equals(s2));Stringt1=newString("abc"); Stringt2=newString("abc");

System.out.println(t1==t2); System.out.println(t1.equals(t2)); Stringt3=t1; System.out.println(t1==t3); System.out.println(t1.equals(t3));}}字符串比较举例falsefalsefalsetruetruetrue程序运行结果如下:字符串比较方法方法说明booleanequalsIgnoreCase(Stringvalue)比较两个字符串,忽略大小写intcompareTo(Stringvalue)比较两个字符串,返回两者之间的差值。如果两个字符串相等,则返回0。booleanstartsWith(Stringvalue)检查一个字符串是否以另一个字符串开始booleanendsWith(Stringvalue)检查一个字符串是否以另一个字符串结束字符串连接

在Java中,运算符“+”可以用来实现字符串的连接,如:

Strings=“Heis”+age+”yearsold.”

假设整数型变量age的值为15,那么,s的值为

“Heis15yearsold”。搜索字符和字符串字符串1情形1:indexOf(character)方法找到第一个匹配索引

0123情形2:如果没有找到匹配,则返回-1返回找到的第一个匹配的位置索引方法说明intindexOf(intch)返回字符ch在字符串中出现的第一个位置intlastIndexOf(intch)返回字符ch在字符串中出现的最后一个位置intindexOf(Stringstr)

返回子串str首字符在字符串中第一次出现的位置intlastindexOf(Stringstr)返回子串str首字符在字符串中最后出现的位置搜索字符和字符串搜索字符串举例_判断邮箱正确性publicclassSearchString{publicstaticvoidmain(String[]args){ Stringemail="JohnSmith@123.com"; intn1=email.indexOf('@'); intn2=email.indexOf('.'); if(n1<n2){ System.out.println(“该电子邮件地址有效"); }else{ System.out.println(“该电子邮件地址无效"); }}}邮箱格式:XXX@XXX.com判断:@应该在.之前字符串提取、连接、替换等方法方法说明publiccharcharAt(intindex)从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负publicStringsubstring(intindex)提取从位置索引开始的字符串部分publicStringsubstring(intbeginindex,intendindex)提取beginindex(包含)和endindex(不包含)位置之间的字符串部分publicStringconcat(Stringstr)连接两个字符串,并新建一个包含调用字符串的字符串对象publicStringreplace(charold,charnew)将调用字符串中出现某个字符的所有位置都替换为另一个字符publicStringtrim()将调用字符串的前后空格删掉publicStringtoLowerCase()把串中的所有字符转换成小写。publicStringtoUpperCase()把串中的所有字符转换成大写。String[]split(String

regex)

根据给定正则表达式的匹配拆分此字符串。字符串应用举例

publicclassStringMethods{ publicstaticvoidmain(String[]args){ Strings1="Helloworld"; Strings2="Hello"; System.out.println(s1.substring(3,8)); System.out.println(s2.concat("World")); System.out.println(s2.replace('l','w')); System.out.println(s1.trim()); }}lowoHelloWorldHewwoHelloworld更改字符大小写方法Hello使用toUpperCase()方法HELLOHELLO使用toLowerCase()方法hello语法publicStringtoUpperCase();语法PublicStringtoLowerCase();更改字符大小写方法举例

publicclassStringTest{ publicstaticvoidmain(String[]args){ Stringname=newString("George"); System.out.println(“姓名是"+name); intlength=name.length(); System.out.println(“姓名的长度为”+length+“个字符"); System.out.println(“姓名用大写形式表示为:"); StringnameUppercase=name.toUpperCase(); System.out.println(nameUppercase);}}任务实现:分离文件名和路径public

classHelloWorldApp{ public

static

voidmain(String[]args){StringfullPath="F:\\java\\myexample\\a.java";intpos=fullPath.lastIndexOf("\\");System.out.println(fullPath.substring(0,pos));System.out.println(fullPath.substring(pos+1));}}C:\ProgramFiles\Jdk\readme.html字符串与模式匹配regionMatches

booleanregionMatches (inttoffset,Stringother,intooffset,intlen) booleanregionMatches (booleanignoreCase,inttoffset,Stringother, intooffset,intlen)

上述两个方法都是用来进行模式匹配的,匹配成功则返回true,否则返回false。其中,toffset和ooffset分别指明当前字符串和参数字符串中所要比较的子串的起始索引位置,len指明比较的长度,而ignoreCase指明比较时是否区分大小写。对于第一种方法,比较是区分大小写的。classzcf{publicstaticvoidmain(String[]arg){ Stringstr1="12abc56rg"; Stringstr2="sfabc16"; inti,j,k;

for(i=1;i<str1.length();i++)//子串的长度从1开始

for(j=0;j<str1.length();j++)//str1的子串

//判断str1中的子串是否在str2中出现

for(k=0;k<=str2.length();k++)

if(str1.regionMatches(j,str2,k,i))System.out.println(str1.substring(j,j+i));//截取子串}}找两个字符串出现的相同子串Str1:12abc56rgStr2:sfabc161abc6abbcabc字符串与基本数据的相互转化各种基本数据类型与String类型之间可以通过方法相互转换。String类中的valueOf()系列方法用于从基本数据类型转换成字符串。publicstaticStringvalueOf(Booleanb)publicstaticStringvalueOf(charc)publicstaticStringvalueOf(inti)publicstaticStringvalueOf(longl)publicstaticStringvalueOf(floatf)publicstaticStringvalueOf(doubled)将字符串转化为基本数据类型Java.lang包中的各种基本数据类型类都具有相应的类方法实现转化操作。publicstaticbyteparseByte(Strings)publicstaticshortparseShort(Strings)publicstaticlongparseLong(Strings)publicstaticintparseInt(Strings)publicstaticfloatparseFloat(Strings)publicstaticdoubleparseDouble(Strings)Strings=“123”;inti=Integer.parseInt(s);字符串与基本数据的相互转化字符串与字符数组的转化字符数组转换为字符串对象String(char[])String(char[],intoffset,intlength)字符串转换为字符数组publicchar[]toCharArray()

初始化一个字符数组,该数组的长度与字符串长度相等,并将字符串对象的全部字符复制到该数组中。publicvoidgetChars(int

start,int

end,char

c[],intoffset)

将当前字符串中从start至end-1位置上的字符复制到数组c中,并从数组c的offset处开始存放。字符串与字节数组用字节数组创建字符串对象String(byte[])String(byte[],intoffset,intlength)将字符串转换为字节数组publicbyte[]getBytes()

将当前字符串转化为一个字节数组。字符串与字节数组的转化例:publicclassExample5_10{publicstaticvoidmain(Stringargs[]){byted[]="你我他".getBytes();System.out.println("数组d的长度是:"+d.length);Strings=newString(d,0,2);System.out.println(s);}}例:publicclassExample5_8{ publicstaticvoidmain(Stringargs[]){ Strings=“华北电力大学计算机专业"; charc[]=s.toCharArray(),d[]; d=newchar[6]; s.getChars(8,14,d,0); System.out.println(c); System.out.println(d);}}java.util包中StringTokenizer类所定义的对象,可以用来对字符串进行分析。比如一个句子、一个段落,一篇文章字、词个数统计等。StringTokenizer类的两个常用构造方法:StringTokenizer(Strings)为字符串s构造一个分析器,使用默认的分隔符集合,即空格符、换行符、回车符、Tab符、进纸符。StringTokenizer(String

s,String

delim)为字符串s构造一个分析器,参数delim中的字符作为分隔符。StringTokenizer类—字符串词法分析器StringTokenizer类的成员方法nextToken():逐个获取字符串的每一个语言符号单位hasMoreTokens():判断字符串中是否还有语言符号countTokens():统计字符串中共有多少个语言符号importjava.util.*;publicclassExample5_7{publicstaticvoidmain(Stringargs[]){Strings="IamJames,sheismygirlfriend";StringTokenizerfenxi=newStringTokenizer(s,",");intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens()){Stringstr=fenxi.nextToken();System.out.println(str);

System.out.println("还剩"+fenxi.countTokens()+"个单词");}System.out.println("s共有单词:"+number+"个");}}程序运行结果:不变性String类创建后直接修改不变性的概念解决方法StringBuffer类String的对等类表示可增加和可编写字符的可变序列将字符插入到字符串中间或附加到字符串末尾StringBuffer类构造方法说明publicStringBuffer()分配长16字符的字符缓冲区publicStringBuffer(intlength)分配长度为length的空缓冲区publicStringBuffer(Stringvalue)接收字符串作为初值,后面再留16个字符的空缓冲区。

StringBuffer

用于表示可以修改的字符串使用连接运算符(+)的字符串会自动创建字符串缓冲对象StringBuffer类的方法方法说明intlength()返回StringBuffer对象的长度publicvoidsetLength (intnewLength)明确地定义字符串的长度。如果newlength大于现在的长度,串尾将补0,如果小于,那么newlength后的字符将丢失。intcapacity()

返回字符串缓冲区的长度,即总的可供分配的字符个数。voidsetCharAt(intpos,charch)使用ch指定的新值设置pos指定的位置上的字符StringtoString()转换为字符串形式StringBuffer类的方法方法说明StringBufferinsert(intoffset,Strings)在指定位置插入指定的字符串publicStringBufferappend(对象类型对象名)将指定的参数对象转化成字符串,附加在原来的字符串对象之后。StringBufferreverse()将此字符序列用其反转形式取代

StringBufferdelete(intstart,intend)删除调用对象中从start位置开始直到end指定的索引–1位置的字符序列。StringBufferdeleteCharAt(intpos)删除pos指定的索引处的字符StringBufferreplace(intstart,intend,Strings)使用字符串s替换调用字符串中从start开始到end结束的子字符串。String与StringBuffer的转换产生一个內容与String对象str相同的StringBufffer对象:StringBufferss=newStringBuffer(str);

产生一个內容与StringBuffer对象ss相同的String对象:Strings=ss.toSting();classdemoOfStringBuffer{publicstaticvoidmain(Stringbuf[]){StringBufferss=newStringBuffer("abc");System.out.println("buffer="+ss);System.out.println(“length=”+ss.length());System.out.println("capacity="+ss.capacity());}}运行结果:

buffer=abclength=3capacity=19从运行结果我们可以看到为附加处理保留了空间。注意:capacity()与length()的区别。举例publicclassStringBuf{ publicstaticvoidmain(String[]args){ StringBufferbuf=newStringBuffer("Java");

buf.append(“GuideVer1/”); buf.append(3); intindex=5;

buf.insert(index,"Student");

index=23;

buf.setCharAt(index,'.');

intstart=24; intend=25;

buf.replace(start,end,“6");

Strings=buf.toString();//转换为字符串 System.out.println(s); }}JavaStudentGuideVer1.6classStringOp{publicstaticvoidmain(Stringargs[]){ Strings1="1234567"; StringBuffers2=newStringBuffer("abc");

System.out.println(s1.substring(5)); System.out.println(s1.concat(s2.toString()));

if(pareTo(s2.toString())==0) System.out.println("s1与s2相等"); else System.out.println("s1与s2不相等"); inti=s1.length(); s2=newStringBuffer(i);

for(intj=i-1;j>=0;j--){ s2.append(s1.charAt(j)); } System.out.println(Integer.parseInt(s1)); System.out.println("字符串s2:"+s2); }}1.C和C++的字符串只是简单的以\0结尾的字符数组,而Java中,字符串是一个封装的对象,这种处理对于编程者提供了许多有利之处。2.C和C++中可以通过指针直接对字符串所在的内存地址进行操作,并且不对越界情况进行检查,Java中只能通过类String或StringBuffer所提供的方法对字符串进行操作,并且要对越界情况进行检查并报告,这样大大增加了安全性。Java与C和C++处理字符串的差别编程练习输入的一个字符串中包含了一个人的姓名、性别和年龄。中间用空格隔开。要求从该字符串中提取出姓名、性别和年龄并赋给相应的变量。表示年龄的变量是整型的。搜索字符串S中是否包含s1,如果包含,则替换为s2。注意s1和s2的长度不一定相等。数组数组是一种最简单的复合数据类型,是一组同类型有序数据的集合。数组分为一维数组和多维数组。数组的元素既可以是简单类型,也可以是引用类型。Java中创建数组的步骤声明数组创建数组空间声明一维数组的两种形式

数组元素类型数组名[];数组元素类型[]数组名;一维数组创建数组空间

数组名=new数组元素类型[元素个数];

可以为基本类型或复合类型不能指出数组中元素的个数inta[];float[]f1,f2;a=newint[3]f1=newfloat[10];f2=newfloat[20];简单类型数组分配内存示意图0xb1ca

a[0]a[1]a[2]inta[];int[]a;

定义一个int类型的数组变量,给变量a分配1个存储空间,初始化为null。anulla=newint[3];

申请3个int类型的存储空间,并将首地址赋给变量a0xb1cainta[];inta=newint[3]float[]f1,f2;f1=newfloat[10];f2=newfloat[20];inta[]=newint[3]float[]f1=newfloat[10];float[]f2=newfloat[20];一维数组声明数组和创建数组空间可组合在一起,

用一条语句完成。整型:0实型:0.0f或0.0d字符:‘\0’引用类型:null数组创建后,系统自动为数组元素赋初值。所以数组的创建也称为动态初始化。数组元素的默认初值创建可变长数组intsize;size=System.in.read();int[]number=newint[size];float[]f=newfloat[10];for(inti=0;i<f.length;i++){f[i]=i+10;}f=newfloat[20];根据输入的数据来定义数组长度在程序中随时修改数组长度重新定义后数组元素初始化为0数组元素的引用数组元素的引用格式

<数组名>[<下标表达式>]数组元素下标由0开始。

最大的下标比数组长度小1。例:inta[]=newint[5]数组a包含了5个数组元素,分别是:

a[0],a[1],a[2],a[3],a[4]a[0]a[1]a[2]a[3]a[4]a一维数组静态初始化与声明类型一致的初始值intintArray[]={1,2,3,4,5};doubledecArray[]={1.1,2.2,3.3};StringstrArray[]={"Java","BASIC","FORTRAN"};类型数组名[]={元素1[,元素2…]}不能定义大小边界检查

Java对数组元素进行越界检查。对于每个数组都有一个属性length指明

自身的长度,如:

f1.length指明数组f1的长度。例:为数组元素赋值并逆序输出

publicclassArrayTest{publicstaticvoidmain(Stringargs[]){inti;inta[]=newint[5];for(i=0;i<a.length;i++){a[i]=i;}for(i=a.length-1;i>=0;i--){System.out.println("a["+i+"]="+a[i]);}}}

运行结果为:a[4]=4a[3]=3a[2]=2a[1]=1a[0]=0for-each格式的循环语句for(Typevalue:array){expressionvalue;}for(inti=0;i<a.length;i++){System.out.println(a[i]);}for(intx:a){System.out.println(x);}作用:顺次遍历数组中的元素,并将元素的值赋给临时变量。缺点:只能顺次遍历所有元素,无法实现较为复杂的循环只能读取数组元素的值,赋给临时变量,不能给数组元素赋值。数组名staticdoubleaverage(doublescore[]){inti;doublesum=0,ave;for(i=0;i<score.length;i++)sum+=score[i];ave=sum/score.length;return(ave);}实现sort方法总体实现

期末考试结束,编写方法average求出某班级前10名同学Java课程的平均分,并编写方法sort将前10同学的成绩按由高到底进行排序。实现average方法staticvoidsort(doublescore[]){inti,j;doubletemp;for(i=0;i<score.length;i++)for(j=i+1;j<score.length;j++)if(score[i]>score[j]){temp=score[i];score[i]=score[j];score[j]=temp;}}publicclassScore{publicstaticvoidmain(String

args[]){ doublea[]={78,89,57,87,98,65,43,79,69,86}; doubleaver=average(a);

System.out.println(aver);

sort(a);

for(intk=0;k<10;k++)

System.out.print(a[k]+"");}}1.创建数组

typearrayName[]=newtype[arraySize];2.创建每一个数组元素

arrayName[0]=newtype(paramList);arrayName[1]=newtype(paramList);…

arrayName[arraySize-1]=newtype(paramList);对象数组的创建StringstringArray[];//定义一个String类型的数组变量stringArray=newString[3];//给数组变量StringArray分配3个连续的存储空间,初始化每个引用值为nullstringArray[0]=newString(“how”);stringArray[1]=newString(“are”);stringArray[2]=newString(“you”);初始化数组元素对象数组内存分配示意图stringArrayoxa2b6how0xb1caare0xd3cayou0xa5c7oxa2b60xb1ca0xd3ca0xa5c7StringstringArray[];

stringArray=newString[3];stringArray[0]=newString(“how”);stringArray[1]=newString(“are”);stringArray[2]=newString(“you”);nullnullnullnulloxa2b6将学生姓名存储在字符数组中,当输入一个姓名时,进行查找,并给出结果。publicclassSearch{

publicstaticvoidmain(String[]args){inti; String[]stuName=newString[5]; Scannersc=newScanner(System.in); for(i=0;i<stuName.length;i++)

stuName[i]=sc.next(); System.out.println("输入要查的学生:"); Stringxm=newString(); xm=sc.next(); for(i=0;i<stuName.length;i++) if(xm.equals(stuName[i]))

{System.out.println("找到了!");break;} if(i>=stuName.length)System.out.println("没找到");

}}多维数组在Java语言中,由于把二维数组看作是数组的数组,数组空间不一定连续分配。二维数组每一行的大小可以不同。规则数组:各行的列数相同。不规则数组:各行的列数不同。二维数组的声明声明二维数组的一般形式为:

类型数组名[][];或类型[][]数组名;或类型[]数组名[];如:int a[][];int[][] a; int[] a[];分配存储空间为二维数组分配空间有两种方法:使用new运算符(动态初始化)

静态初始化1.规则数组创建typearrayName[][]=newtype[length1][length2]inta[][]=newint[3][4];二维数组的动态初始化2.不规则数组的创建111121inta[][]=newint[3][]a[0]=newint[1]a[1]=newint[2]a[2]=newint[3]000000000000适用于不规则的二维数组简单二维数组内存分配示意图float[][]x;xnullx=newfloat[3][];x0xab12nullnullnullx[0]=newint[2];x[1]=newint[3];x[2]=newint[4];x0xab12x[0]x[1]x[2]x[0]x[1]x[2]例如:Strings[][]=newString[2][];s[0]=newString[2];s[1]=newString[3];s[0][0]=newString(“Good”);s[0][1]=newString(“Luck”);s[1][0]=newString(“to”);s[1][1]=newString(“you”);s[1][2]=newString(“!”);二维对象数组的创建二维数组的静态初始化静态初始化是在声明数组的同时就为数组元素指定初值。例如:intintArray[][]={{1,2},{3,4},{5,6,7}};不必指出数组每一维的大小,系统会根据初始化时给出的初始值的个数自动算出数组每一维的大小。适用于规则数组和不规则数组。intArray[0],intArray[1]长度为2;intArray[2]长度为3。对二维数组中每个元素,引用方式为:

arrayName[index1][index2]

其中index1和index2是数组下标,为整型常数和整型表达式,都是从0开始的。二维数组元素的引用publicclassYanghui{publicstaticvoidmain(Stringargs[]){finalintMAX=10;intmat[][]=newint[MAX][];inti=0,j,n=MAX;

for(i=0;i<n;i++){mat[i]=newint[i+1];mat[i][0]=1;mat[i][i]=1;for(j=1;j<i;j++)mat[i][j]=mat[i-1][j-1]+mat[i-1][j];}

for(i=0;i<n;i++){for(j=0;j<n-i;j++)System.out.print("");for(j=0;j<=i;j++)System.out.print(""+mat[i][j]);System.out.println();}}}例:输出杨辉三角写出运行结果classShuzu{ publicstaticvoidmain(String[]arg){ inta[][]=newint[3][];inti,j; a[0]=newint[2]; a[1]=newint[3]; a[2]=newint[4]; for(i=0;i<a.length;i++) {for(j=0;j<a[i].length;j++) {a[i][j]=i+j;System.out.print(a[i][j]+””);}System.out.println();} }}011232345二维矩阵转置publicclassMatrixt{publicstaticvoidmain(Stringargs[]){inta[][]=

{{1,2,3,4},{2,3,4,5},{3,4,5,6}};intb[][]=newint[4][3];inti,j;for(i=0;i<3;i++)

for(j=0;j<4;j++)b[j][i]=a[i][j];

for(i=0;i<4;i++){for(j=0;j<3;j++)System.out.print(s+"");

System.out.println();}}}程序运行结果:123234345456数组操作的常用方法publicstaticvoidarraycopy(Objectsrc,intsrc_position,Objectdst,intdst_position,intlength)类System的静态方法arraycopy(),可用来进行数组复制。其格式和功能如下:自学数组操作的常用方法arraycopy()方法【案例】用方法arraycopy()复制数组。classArrayCopy{publicstaticvoidmain(Stringargs[]){intarray1[]={1,2,3,4,5,6,7,8,9,10};intarray2[]={0,0,0,0,0,0,0,0,0,0};

System.arraycopy(array1,0,array2,2,5);System.out.print("array2:");for(ints:array2)System.out.print(s+"");System.out.println();}}程序运行结果如下:array2:0012345000类Arrays中的方法java.util.Arrays类中提供了对数组排序sort()、二分查找binarySearch()等静态方法。sort()方法【案例】使用sort()方法对一整型数组递增排序importjava.util.*;publicclassArraySort{publicstaticvoidmain(Stringargs[]){inta[]={8,6,7,3,5,4},i;Arrays.sort(a);for(ints:a)System.out.print(""+s);System.out.println();}}程序运行结果为:345678使用数组来存储不同类型数据publicclassbbb{publicstaticvoidmain(String[]args){Objecta[]=newObject[5];a[0]=5;a[1]='a';a[2]=3.456;a[3]="abcde";a[4]=(Integer)a[0]+3;for(Objectx:a)System.out.println(x);}}8.7向量向量(Vector)是java.util类包提供的一个工具类。它是允许不同类型元素共存的变长数组。每个Vector类的对象可以表达一个完整的数据序列。Vector可以追加对象元素数量,可以方便的修改和维护序列中的对象。向量的适用情况需要将不同类的对象组合成一个数据序列。序列中的元素个数不确定。序列中的元素都是对象或可以表示为对象。需要做频繁的查询、插入或删除等操作。在不同的类之间传递大量的数据。

Vector类有三个构造方法:Vector():构造一个长度为10的空向量。Vector(intcapacity)

以指定的存储容量构造一个空向量。Vector(intcapacity,int

capacityIncrement)

以指定的存储容量和容量增量构造一个空向量。创建向量

VectorMyVector=newVector(100,50);

创建的MyVector向量序列初始有100个元素的空间,以后一旦使用殆尽则以50为单位递增,使序列中元素的个数变化成150,200,…。在创建Vector序列时,不需要指明序列中元素的类型,可以在使用时确定。创建向量addElement(Objectobj)将新元素添加到序列尾部。insertElementAt(Object

obj,intindex)将新元素插入到指定位置。向向量序列中添加元素插入位置VectorMyVector=newVector();for(inti=1;i<=10;i++){MyVector.addElement(newInteger(i));}MyVector.insertElementAt("middle",5);添加元素实例—基本数据类的包装importjava.util.*;classAa{publicstaticvoidmain(String[]arg){VectorMyVector=newVector();

for(inti=1;i<=10;i++)MyVector.addElement(newInteger(i));MyVector.insertElementAt("middle",5);

for(inti=0;i<=10;i++)System.out.println(MyVector.elementAt(i));}}添加元素实例运行结果:12345middle678910setElementAt(Object

obj,intindex)

将index位置处的对象元素设置为obj,如果这个位置原来有元素,则被覆盖。removeElement(Object

obj)

删除与指定的obj对象相同的第一个元素,同时将后面的元素前提,补上空位。返回值是布尔值。removeElementAt(intindex)

删除index指定位置处的元素,将后面的元素前提。removeAllElements():清除序列中的所有元素。元素的修改或删除VectorMyVector=newVector(100);for(inti=0;i<10;i++){

MyVector.addElement(“welcome”);MyVector.addElement(“to”);MyVector.addElement(“beijing”);}while(MyVector.removeElement(“to”));向量实例—添加删除元素1.ObjectelementAt(intindex)

返回指定位置处的元素。一个要注意的问题:由于返回的是Object类型的对象,在使用之前通常需要进行强制类型转换,将返回的对象引用转换成Object类的某个具体子类的对象。例如:

Stringstr=(String)MyVector.elementAt(0);2.booleancontains(Objectobj)

检查向量序列中是否包含指定的对象元素obj。查找向量序列中的元素3.intindexOf(Objectobj,intstart_index)

从指定的start_index位置开始向后搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回-1。4.intlastIndexOf(Objectobj,intstart_index)

从指定的start_index位置开始向前搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回-1。inti=0;While((i=MyVector.indexOf(“welcome”,i))!=-1){System.out.println(i);i++;}查找向量序列中的元素size():返回Vector中元素的数量capacity():返回Vector的容量clone():建立Vector的备份copyInto(Object[]):把Vector中的元素拷贝到一个数组中firstElement():返回第一个元素lastElement():返回最后一个元素isEmpty():判断是否为空setSize(intsize):设置Vector的大小trimToSize():将Vector的容量下调至最小值Vector中的其他方法

使用Vector时,一个需要特别注意的问题就是要先创建后使用。如果不先使用new运算符利用构造函数创建Vector类的对象,而直接使用Vector的方法,如:addElement()等方法,则可能造成堆栈溢出或使用null指针等异常,妨碍程序的正常运行。使用向量应注意:例题:用向量实现,创建3个学生对象(学号、姓名、年龄)和4个教师对象(教工号、姓名、系别),并且输出。创建向量的对象importjava.util.*;classStu{Stringxh,xm; intnl;

pub

温馨提示

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

最新文档

评论

0/150

提交评论