第6章 java数组和字符串_第1页
第6章 java数组和字符串_第2页
第6章 java数组和字符串_第3页
第6章 java数组和字符串_第4页
第6章 java数组和字符串_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

数组与字符串数组数组是用来存储一组相同类型数据的数据结构,通过整形下标(从0开始)访问数组中的每一个元素。数组的声明

int[]a;String[]str;或inta[];Stringstr[];

数组元素的类型可以是任何数据类型。数组的创建

使用new

如:a=newint[100];//下标从0到99

数组的声明和创建可以合在一起如:int[]a=newint[100];数组是恒定的:数组一旦被创建,就不能再改变它的大小。数组不是静态的:数组的内存都是通过new动态分配的。

java允许使用int变量来指定数组的大小。如:intsize=20;

double[]a=newdouble[size];

inta[5];

错误,不能使用这种C语言的方式数组的初始化使用new创建一个数组时,java会自动给每一个数组元素赋一个默认的初值。

整型:0,浮点型:0.0f或

0.0d,字符:0,布尔型:false,类对象:null在创建数组的同时,赋予初值

int[]a={1,2,3,4,5,6};

a=newint[]{1,2,3,4,5,6};//匿名数组使用数组的length属性

length是数组类中唯一的成员变量,数组被创建时系统会自动给length赋值。通过length属性得到数组的元素数目。

如:for(inti=0;i<a.length;i++)

System.out.println(a[i]);不要使用创建数组时用于指定数组大小的整数作为循环结束的条件。for(inti=0;i<6;i++)应该使用

i<a.length拷贝数组

把一个数组变量拷贝给另一个

int[]a=newint[]{1,2,3,4,5,6};

int[]b=a;

b[3]=9;a和b都指向相同的数组这时,a[3]的值也是9使用System类的arraycopy()方法

System.arraycopy(from,fromIndex,to,toIndex,count)to数组必须有足够的空间来容纳拷贝的元素,否则造成数组越界:java.lang.ArrayIndexOutOfBoundsExceptionpublicclassArrayTest{publicstaticvoidmain(String[]args){ int[]a=newint[]{1,2,3,4,5,6}; int[]b=newint[]{111,222,333,444,555,666}; System.arraycopy(a,2,b,1,3); for(inti=0;i<b.length;i++) System.out.println("b["+i+"]="+b[i]);}}对数组的操作,是对下标的操作对数组排序使用Arrays类的sort方法

staticvoidsort(数据类型[]数组名)

Arrays.sort(被排序的数组名)sort方法采用了优化的快速排序算法importjava.util.*;publicclassArraySorts{publicstaticvoidmain(String[]args){ inti; String[]test={"How","many","numbers","do",

"you","need","to","draw","?"}; Arrays.sort(test); for(i=0;i<test.length;i++) System.out.print(test[i]+"\t");}}?Howdodrawmanyneednumberstoyou二维数组使用多个下标访问数组元素二维数组的创建使用new操作是从最高维开始,分别为每一维分配内存。

int[][]a=newint[3][5]

二维数组也可以直接以初始化的方式来创建数组

int[][]a={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}}字符串概述

Java中没有内置的字符串数据类型,而是在标准库中包含预定义的字符串类。字符串是字符的序列,字符串中字符的位置从0开始计算。程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量String类;另一类是创建之后允许再做更改和变化的字符串变量StringBuffer类。

StringTokenizer类侧重于对字符串的分割。String类

Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。字符串常量使用“”定义字符串,使用‘’定义字符。

Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:strings=“HelloWorld!”创建字符串对象使用String类,可以很方便的创建一个字符串对象。格式:String

字符串对象名=newString(“字符串值”);Strings=newString("wearestudents");Stringtom=String(s);

String类有11个构造方法,详细情况可以参看JDK的帮助文档(jdk-1_5_0-doc.zip)。下载地址:/j2se/1.5.0/download.jsp

String是恒定的:所有操作都不会改变原String对象,是将操作的结果以一个新的对象返回。publicclassStringer{StaticStringupcase(Strings){returns.toUpperCase();}publicstaticvoidmain(String[]args){Stringq=newstring(“hello”);System.out.println(q);Stringqq=upCase(q);System.out.println(qq);System.out.println(q);}}输出:hello输出:HELLO输出:hello

String类的常用方法Stringstr1=“hello,java!”;System.out.println(str1.length());Stringstr2=“你好,java!”;System.out.println(str2.length());输出:12输出:8

publicintlength():获取字符串的长度。字符串比较比较过程:如果当前字符串与s完全相同,该方法返回值0;如果当前字符串中某个位置上的字符大于s字符串中对应位置的字符,compareTo方法返回正值,反之则compareTo方法返回负值。用compareTo()方法,按字典顺序比较

publicint

compareTo(Strings)

多数情况下比较字符在Unicode编码表中的位置。字符串长度不等且其中一字符串是另一字符串的子串时,则比较长度。publicclassCompareTest{publicstaticvoidmain(String[]args){ Stringstr1=newString("helloworld"); Stringstr2=newString("hello"); System.out.println(pareTo(str2)); Stringstr3=newString("helle"); System.out.println(pareTo(str1)); System.out.println(pareTo(str3)); Stringstr4=newString("Helle"); System.out.println(pareTo(str4));}}输出:5输出:-10输出:10输出:32不要用“==”来检测两个字符串是否相等,它只能判断两个字符串是否存储在同一位置。

equals()方法用来判断两个字符串是否相同。publicboolean

equals(Strings)字符串连接使用concat()方法

publicStringconcat(String

str)

使用符号+Stringstr3=str1.concat(str2);System.out.println(str3);Stringstr1=“123”;Stringstr2=“456”;Stringstr3=str1+str2;System.out.println(str3);123456提取部分字符串

charAt()方法:提取index位置上的一个字符。publiccharcharAt(intindex)

subString()方法:获取子串publicStringsubstring(int

beginIndex)publicStringsubstring(int

beginIndex,int

endIndex)Stringstr=newString(“hello”);str=str.subString(0,4)+”!”System.out.println(str);Stringstr=newString(“helloworld”);str=str.subString(0,5)+””+str.subString(6)+”!”System.out.println(str);结果:hell!结果:helloworld!去掉字符串前后的空格

publicStringtrim()Stringstr3=“123"System.out.println(str3.trim());输出:123字符串与基本数据的相互转换“数字”格式的字符串可以转化为相应的基本数据类型。

Byte、Short、Integer,Long、Float、Double类调相应的类方法来实现转换。

publicstaticbyteparseByte(Strings)

publicstaticshortparseShort(Strings)

publicstaticint

parseInt(Strings)

publicstaticlongparseLong(Strings)

publicstaticdoubleparseDouble(Strings)

publicstaticdoubleparseDouble(Strings)Stringstr=“1234”intn=Integer.parseInt(str);n的值为1234使用String类的类方法valueOf()将数字转化为字符串。

publicStringvalueOf(byten)

publicStringvalueOf(intn)

publicStringvalueOf(longn)

publicStringvalueOf(floatn)

publicStringvalueOf(doublen)doublenum=1234.56;System.out.println(String.valueOf(num));输出为1234.56对象的字符串表示

Object类有一个public方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。publicclassDataToString{publicstaticvoidmain(String[]args){DataToStringobj=newDataToString();System.out.println(obj.toString());System.out.println(Integer.toString(50));System.out.println(newDouble(50.123).toString());}}DataToString@ad3ba45050.123StringBuffer类

StringBuffer类能创建可修改的字符串序列。

StringBuffer类的构造方法

StringBuffer():创建空的StringBuffer对象,初始化缓冲区为16字符的长度。

StringBuffer(int

len):创建指定字符缓冲区长度len的StringBuffer对象。

StringBuffer(String

str):创建具有初值为字符串str的StringBuffer对象,除去给定的字符串str所占的空间外,还提供16个字符的空间。

StringBuffer类的常用方法获取StringBuffer对象的长度与容量信息。

publicintlength():获得当前字符串缓冲区中所包含的字符数。

publicintcapacity():获得当前字符串缓冲区的容量大小。publicclassBufferStrings{publicstaticvoidmain(String[]args){ StringBufferstrb1=newStringBuffer(); StringBufferstrb2=newStringBuffer(25); StringBufferstrb3=newStringBuffer("Thisisjava!"); System.out.print(strb1.length()+"\t"); System.out.print(strb1.capacity()+"\n"); System.out.print(strb2.length()+"\t"); System.out.print(strb2.capacity()+"\n"); System.out.print(strb3.length()+"\t"); System.out.print(strb3.capacity()+"\n");}}0 160 2514 30

StringBuffer对象的字符串扩充

append方法可以将其它Java类型数据转化为字符串后,再追加到StringBuffer对象中。

insert方法将一个字符串插入另一个字符串中,并返回当前对象的引用。无论是扩充还是插入字符串,只要字符串缓冲区的长度充足,缓冲区的长度就不会变。当附加或插入字符串而使得字符串缓冲区容量不足时,系统会自动分配更多的空间。

publiccharcharAt(intindex)

得到参数n指定的置上的单个字符。

n的值必须是非负的,并且小于当前对象实体中字符串序列的长度。

publicvoidsetCharAt(intindex,charch)

将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换。

n的值必须是非负的,并且小于当前对象实体中字符串序列的长度。

StringBuffer

delete(int

startIndex,int

endIndex)

从当前StringBuffer对象实体中的字符串中删除一个子字符串,并返回当前对象的引用。要删除的子字符串从startIndex到endIndex-1。publicclassBufferStrings{publicstaticvoidmain(String[]args){ StringBufferstrb1=newStringBuffer("Thisisjava!"); StringBufferstrb2=strb1.delete(1,3); System.out.println(strb1); System.out.println(strb2); System.out.println(strb1.delete(1,3));}}Tsisjava!Tsisjava!Tisjava!StringTokenizer类

StringTokenizer类的构造方法

StringTokenizer(Strings):为字符串s构造一个分析器,使用默认的分隔符集合(如:空格符、换行符、Tab符等)。

StringTokenizer(Strings,String

delim):为字符串s构造一个分析器,是用参数delim指定的字符作为分隔符。

StringTokenizer(String

s,String

delim,boolean

returnDelims):使用delim提供的参数作为分隔符,当returnDelims为true是,将分隔符作为标识返回。使用StringTokenizer对象

StringnextToken():逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中获得下一个语言符号,通常用while循环来逐个获取语言符号。

hasMoreTokens():用于控制循环,只要字符串中还有语言符号,该方法就返回true,否则放回false。

countTokens():获得字符串中一共有多少个语言符号。importjava.util.*;publicclassExample{publicstaticvoidmain(String[]args){Strings="wearestud,ents";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+"个");}}正则表达式正则表达式与模式匹配正则表达式一个正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称作正则表达式中的元字符。比如:“\\dok”就是一个正则表达式,其中\\d就是有特殊意义的元字符,代表0到9中的任何一个。一个正则表达式也称作一个模式。和一个模式匹配的字符串称作匹配模式字符串,也称作模式匹配字符串。字符串“9ok”和“1ok”都是模式匹配字符串模式匹配模式匹配就是检索和指定模式匹配的字符串。进行模式匹配的类在java.util.regex包中。建立模式对象

publicstaticPatterncompile(String

regex)

publicstaticPatterncompile(String

regex, intflags)

如果参数patter指定的正则表达式有错,complie方法将抛出异常:PatternSyntaxException。P

温馨提示

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

最新文档

评论

0/150

提交评论