版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数组与字符串数组数组是用来存储一组相同类型数据的数据结构,通过整形下标(从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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建教师招聘统考福清市教育局招聘225人笔试备考题库及答案解析
- 2026年中华全国总工会所属事业单位招聘(22人)笔试备考试题及答案解析
- 2026年枣庄科技职业学院、枣庄工程技师学院、滕州市中等职业教育中心学校校园招聘备案制工作人员(40人)考试备考题库及答案解析
- 2026年腾冲市教体系统所属事业单位校园招聘紧缺专业教师(13人)考试备考题库及答案解析
- 中国移动杭州研发中心2026届春季校园招聘、2027届“凌云计划”实习生招聘笔试模拟试题及答案解析
- 2026届黑龙江省哈尔滨市第113中学初三六校第一次联考英语试题试卷含解析
- 甘肃省景泰县重点名校2026年初三第四次中考适应性考试(4月)英语试题含解析
- 浙江省东阳市2025-2026学年初三下学期入学考试语文试题试卷含解析
- 采购流程标准化管理工具集
- 营销活动策划模板线上线下活动策划与执行版
- 2025浙江杭州临安文商旅集团有限公司招聘工作人员4人笔试历年备考题库附带答案详解
- 2026四川巴中市通江县红峰国资本投资运营集团限公司公开招聘9人易考易错模拟试题(共500题)试卷后附参考答案
- 2026届湖北省武汉普通高中高三3月调考化学+答案
- 2026年安徽卫生健康职业学院单招职业技能考试题库含答案详解(夺分金卷)
- 学校提升教育教学质量实施方案:直接照搬!教学提质“立竿见影”的全操作模板
- 小儿肺炎救治管理培训措施
- 2026年安庆医药高等专科学校单招职业适应性测试题库含答案详解(b卷)
- 湖北省云学名校联盟2025届高三年级2月联考物理(含答案)
- 2026云南德宏州瑞丽市人民法院招聘聘用制书记员2人考试参考试题及答案解析
- 2026年春季小学湘美版(2024)二年级下册美术教学计划、教案及每课教学反思(附目录)
- TCECS10287-2023钢筋连接用直螺纹套筒
评论
0/150
提交评论