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

下载本文档

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

文档简介

1、数组与字符串数 组l 数组是用来存储一组相同类型数据的数据结构,通过整形下标(从0开始)访问数组中的每一个元素。 数组的声明 int a; String str; 或 int a ; String str ;l 数组元素的类型可以是任何数据类型。 数组的创建 使用new 如:a = new int100; / 下标从0到99l 数组的声明和创建可以合在一起 如: int a = new int100;l 数组是恒定的:数组一旦被创建,就不能再改变它的大小。l 数组不是静态的:数组的内存都是通过new动态分配的。l java允许使用int变量来指定数组的大小。u 如:int size = 20;

2、 double a = new doublesize;u int a5; 错误,不能使用这种C语言的方式 数组的初始化l 使用new创建一个数组时,java会自动给每一个数组元素赋一个默认的初值。u 整型:0,浮点型:0.0f 或 0.0d,字符:0,布尔型:false,类对象:nulll 在创建数组的同时,赋予初值u int a = 1,2,3,4,5,6; a = new int 1,2,3,4,5,6; / 匿名数组 使用数组的length属性l length是数组类中唯一的成员变量,数组被创建时系统会自动给length赋值。l 通过length属性得到数组的元素数目。 如: for(i

3、nt i = 0;i a.length;i+) System.out.println(ai);l 不要使用创建数组时用于指定数组大小的整数作为循环结束的条件。for(int i = 0;i 6;i+)应该使用ia.length 拷贝数组l 把一个数组变量拷贝给另一个 int a = new int1,2,3,4,5,6; int b = a; b3 = 9; a和b都指向相同的数组这时,a3的值也是9l 使用System类的arraycopy()方法System.arraycopy(from,fromIndex,to,toIndex,count)u to数组必须有足够的空间来容纳拷贝的元素,否

4、则造成数组越界:java.lang.ArrayIndexOutOfBoundsExceptionpublic class ArrayTest public static void main(String args)int a = new int1,2,3,4,5,6 ;int b = new int111,222,333,444,555,666 ;System.arraycopy(a,2,b,1,3);for(int i = 0;ib.length;i+) System.out.println(b+i+ = +bi); 对数组的操作,是对下标的操作 对数组排序l 使用Arrays类的sort方

5、法u static void sort(数据类型 数组名)u Arrays.sort(被排序的数组名)l sort方法采用了优化的快速排序算法import java.util.*;public class ArraySorts public static void main(String args)int i;String test = How,many,numbers,do,you,need,to,draw,? ;Arrays.sort(test);for(i = 0;i test.length;i+) System.out.print(testi+t); ? How do draw man

6、y need numbers to you 二维数组使用多个下标访问数组元素l 二维数组的创建使用new操作是从最高维开始,分别为每一维分配内存。 int a = new int35l 二维数组也可以直接以初始化的方式来创建数组 int a = 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7字符串概述l Java中没有内置的字符串数据类型,而是在标准库中包含预定义的字符串类。l 字符串是字符的序列,字符串中字符的位置从0开始计算。l 程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量String类;另一类是创建之后允许再做更改和变化的字符串变量Str

7、ingBuffer类。l StringTokenizer类侧重于对字符串的分割。String类v Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。 字符串常量l 使用“”定义字符串,使用定义字符。l Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:string s = “Hello World!” 创建字符串对象l 使用String类,可以很方便的创建一个字符串对象。格式:String 字符串对象名 = new String(“字符串值”);String s=new String(w

8、e are students);String tom=String(s);l String类有11个构造方法,详细情况可以参看JDK的帮助文档(jdk-1_5_0-doc.zip )。u 下载地址:http:/ String是恒定的:所有操作都不会改变原String对象,是将操作的结果以一个新的对象返回。public class Stringer Static String upcase(String s) return s.toUpperCase(); public static void main(String args) String q = new string(“hello”); S

9、ystem.out.println(q); String qq = upCase(q); System.out.println(qq); System.out.println(q); 输出输出:hello输出输出:HELLO输出输出:hello String类的常用方法String str1 = “hello,java!”;System.out.println(str1.length();String str2 = “你好,java!”;System.out.println(str2.length();输出:12输出:8l public int length():获取字符串的长度。 l 字符串

10、比较 比较过程:如果当前字符串与s完全相同,该方法返回值0;如果当前字符串中某个位置上的字符大于s字符串中对应位置的字符,compareTo方法返回正值,反之则compareTo方法返回负值。 u 用compareTo()方法,按字典顺序比较 public int compareTo(String s) 多数情况下比较字符在Unicode编码表中的位置。字符串长度不等且其中一字符串是另一字符串的子串时,则比较长度。public class CompareTest public static void main(String args)String str1 = new String(hello

11、world);String str2 = new String(hello);System.out.println(pareTo(str2);String str3 = new String(helle);System.out.println(pareTo(str1);System.out.println(pareTo(str3);String str4 = new String(Helle);System.out.println(pareTo(str4); 输出:5输出:-10输出:10输出:32u 不要用“=”来检测两个字符串是否相等,它只能判断两个字符串是否存储在同一位置。u equal

12、s()方法用来判断两个字符串是否相同。public boolean equals(String s)l 字符串连接u 使用concat()方法 public String concat(String str)u 使用符号+String str3 = str1.concat(str2);System.out.println(str3);String str1 = “123”;String str2 = “456”; String str3 = str1 + str2;System.out.println(str3);123456l 提取部分字符串 u charAt()方法:提取index位置上的

13、一个字符。public char charAt(int index)u subString()方法:获取子串public String substring(int beginIndex )public String substring(int beginIndex, int endIndex )String str = new String(“hello”);str = str.subString(0,4)+”!”System.out.println(str); String str = new String(“helloworld”);str = str.subString(0,5)+” ”

14、+str.subString(6)+” !”System.out.println(str); 结果:hell!结果:hello world !l 去掉字符串前后的空格l public String trim()String str3 = “ 1 2 3 System.out.println(str3.trim();输出:1 2 3 字符串与基本数据的相互转换l “数字”格式的字符串可以转化为相应的基本数据类型。l Byte、Short、Integer,Long、Float、Double类调相应的类方法来实现转换。u public static byte parseByte(String s)u

15、 public static short parseShort(String s)u public static int parseInt(String s)u public static long parseLong(String s)u public static double parseDouble(String s)u public static double parseDouble(String s)String str = “1234”int n = Integer.parseInt(str);n的值为1234l 使用String类的类方法valueOf()将数字转化为字符串。u

16、public String valueOf(byte n)u public String valueOf(int n)u public String valueOf(long n)u public String valueOf(float n)u public String valueOf(double n)double num = 1234.56;System.out.println(String.valueOf(num);输出为1234.56l 对象的字符串表示u Object类有一个public 方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。public c

17、lass DataToString public static void main(String args) DataToString obj=new DataToString(); System.out.println(obj.toString(); System.out.println(Integer.toString(50); System.out.println(new Double(50.123).toString(); DataToStringad3ba45050.123StringBuffer类 v StringBuffer类能创建可修改的字符串序列。 StringBuffer类

18、的构造方法l StringBuffer():创建空的StringBuffer对象,初始化缓冲区为16字符的长度。l StringBuffer(int len):创建指定字符缓冲区长度len的StringBuffer对象。l StringBuffer(String str):创建具有初值为字符串str的StringBuffer对象,除去给定的字符串str所占的空间外,还提供16个字符的空间。 StringBuffer类的常用方法l 获取StringBuffer对象的长度与容量信息。u public int length():获得当前字符串缓冲区中所包含的字符数。u public int capa

19、city():获得当前字符串缓冲区的容量大小。public class BufferStrings public static void main(String args)StringBuffer strb1 = new StringBuffer();StringBuffer strb2 = new StringBuffer(25);StringBuffer strb3 = new StringBuffer(This is java !);System.out.print(strb1.length()+t);System.out.print(strb1.capacity()+n);System

20、.out.print(strb2.length()+t);System.out.print(strb2.capacity()+n);System.out.print(strb3.length()+t);System.out.print(strb3.capacity()+n); 0 016160 0252514143030l StringBuffer对象的字符串扩充u append方法可以将其它Java类型数据转化为字符串后,再追加到StringBuffer对象中。u insert方法将一个字符串插入另一个字符串中,并返回当前对象的引用。u 无论是扩充还是插入字符串,只要字符串缓冲区的长度充足,

21、缓冲区的长度就不会变。u 当附加或插入字符串而使得字符串缓冲区容量不足时,系统会自动分配更多的空间。l public char charAt(int index)u 得到参数n指定的置上的单个字符。u n的值必须是非负的,并且小于当前对象实体中字符串序列的长度。l public void setCharAt(int index, char ch)u 将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换。u n的值必须是非负的,并且小于当前对象实体中字符串序列的长度。l StringBuffer delete(int startIndex, int endInd

22、ex)u 从当前StringBuffer对象实体中的字符串中删除一个子字符串,并返回当前对象的引用。u 要删除的子字符串从startIndex到endIndex-1。public class BufferStrings public static void main(String args)StringBuffer strb1 = new StringBuffer(This is java !);StringBuffer strb2 = strb1.delete(1,3);System.out.println(strb1);System.out.println(strb2);System.ou

23、t.println(strb1.delete(1,3); Ts is java !Ts is java !Tis java !StringTokenizer 类 StringTokenizer类的构造方法l StringTokenizer(String s):为字符串s构造一个分析器,使用默认的分隔符集合(如:空格符、换行符、Tab符等)。l StringTokenizer(Strings,String delim):为字符串s构造一个分析器,是用参数delim指定的字符作为分隔符。l StringTokenizer(String s,String delim,boolean returnDe

24、lims):使用delim提供的参数作为分隔符,当returnDelims为true是,将分隔符作为标识返回。 使用StringTokenizer对象l String nextToken():逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中获得下一个语言符号,通常用while循环来逐个获取语言符号。l hasMoreTokens():用于控制循环,只要字符串中还有语言符号,该方法就返回true,否则放回false。l countTokens():获得字符串中一共有多少个语言符号。import java.util.*;public class Example

25、public static void main(String args) String s = we are stud,ents; StringTokenizer fenxi = new StringTokenizer(s, ,); /空格和逗号做分 int number=fenxi.countTokens(); while(fenxi.hasMoreTokens() String str = fenxi.nextToken(); System.out.println(str); System.out.println(还剩+fenxi.countTokens()+个单词); System.ou

26、t.println(s共有单词:+number+个); 正则表达式 正则表达式与模式匹配l 正则表达式u 一个正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称作正则表达式中的元字符。比如:“dok”就是一个正则表达式,其中d就是有特殊意义的元字符,代表0到9中的任何一个。u 一个正则表达式也称作一个模式。u 和一个模式匹配的字符串称作匹配模式字符串,也称作模式匹配字符串。字符串“9ok”和“1ok”都是模式匹配字符串l 模式匹配u 模式匹配就是检索和指定模式匹配的字符串。u 进行模式匹配的类在java.util.regex包中。u 建立模式对象 public static Pattern compile(String regex) public static Pattern compile(String regex, int flags) 如果参数pa

温馨提示

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

评论

0/150

提交评论