编程红宝书(珍藏版) ava 完金自学手册 第5章字符串操作 字符串是程序编写中经常用到的一种操作。Java 提供了两种字符串操作: String类和 StringBuffer类,对字符串的操作是通过定义好 的一系列方法实现的。本节重点讲解字符串的操 作和格式化字符串 Q想桃工业出隙社
第5章 字符串操作 • 字符串是程序编写中经常用到的一种操作。Java 提供了两种字符串操作:String类和 StringBuffer类,对字符串的操作是通过定义好 的一系列方法实现的。本节重点讲解字符串的操 作和格式化字符串
编程红宝书(珍藏版) ava 完金自学手册 5.1字符串 字符串是由单个或多个字符组成的。本小节首先 介绍Java提供的字符串类,介绍分三个部分,分 别是字符串分类、如何声明和创建字符串,通过 本节的学习,使读者对字符串有直观的认识。 Q想桃工业出隙社
5.1 字符串 • 字符串是由单个或多个字符组成的。本小节首先 介绍Java提供的字符串类,介绍分三个部分,分 别是字符串分类、如何声明和创建字符串,通过 本节的学习,使读者对字符串有直观的认识
编程红宝书(珍藏版) ava 完金自学手册 5.1.1字符串分类 Java提供了两种字符串类,即 String类和 StringBuffer类。它们都提供了 相应的方法实现字符串地操作。但二者略有不同,下面详细介绍。 String类:该类一旦产生一个字符串,其对象就不可变。 String的内容和 长度是固定的。如果程序需要获得字符串的信息需要调用系统提供的各种 字符串操作方法实现。虽然通过各种系统方法可以对字符串施加操作,但 这并不改变对象实例本身,而是生成了一个新的实例。系统为 String类对 象分配内存,是按照对象包含实际字符数分配。 StringBuffer类:该类从名字就可以看出具有缓冲功能。 StringBuffer类 处理可变字符串。如果要修改一个 StringBuffer类的字符串,不需要再创 建新的字符串对象,而是直接操作原来的字符串。该类的各种字符串操作 方法中与 String类提供的方法不相同。 系统为 Stringbuffer类对象分配内存时,除去当前字符所占空间外,还提 供另外16个字 符大小的缓冲区。注意使用 StringBuffer类对象时,使用 length方法获 得实际包含字符 串的长度, capacity(方法返回当前数据容量和缓冲区的容量之和 Q想桃工业出隙社
5.1.1 字符串分类 • Java提供了两种字符串类,即String类和StringBuffer类。它们都提供了 相应的方法实现字符串地操作。但二者略有不同,下面详细介绍。 • String类:该类一旦产生一个字符串,其对象就不可变。String的内容和 长度是固定的。如果程序需要获得字符串的信息需要调用系统提供的各种 字符串操作方法实现。虽然通过各种系统方法可以对字符串施加操作,但 这并不改变对象实例本身,而是生成了一个新的实例。系统为String类对 象分配内存,是按照对象包含实际字符数分配。 • StringBuffer类:该类从名字就可以看出具有缓冲功能。StringBuffer类 处理可变字符串。如果要修改一个StringBuffer类的字符串,不需要再创 建新的字符串对象,而是直接操作原来的字符串。该类的各种字符串操作 方法中与String类提供的方法不相同。 • 系统为StringBuffer类对象分配内存时,除去当前字符所占空间外,还提 供另外16个字 • 符大小的缓冲区。注意使用StringBuffer类对象时,使用length()方法获 得实际包含字符 • 串的长度,capacity()方法返回当前数据容量和缓冲区的容量之和
编程红宝书(珍藏版) ava 完金自学手册 5.1.2声明字符串 字符串的声明格式有两种常量声明方式和对象声 明方式 常量声明方式用双引号括住一个字符串,如 “hel1o” String stringhello=“hell”; 对象声明方式,其格式如下 字符串类字符串名=new字符串类(参数),下面 是: String stringhello= new string(“ hello”); Q 机械工业出版社 China Machine Press
5.1.2 声明字符串 • 字符串的声明格式有两种常量声明方式和对象声 明方式。 • 常量声明方式用双引号括住一个字符串,如 “hello”。 • String stringhello = “hello”; • 对象声明方式,其格式如下。 • 字符串类 字符串名= new字符串类(参数),下面 是: • String stringhello = new String(“hello”);
编程红宝书(珍藏版) ava 完金自学手册 5.1.3创建字符串 在声明了字符串后,就需要创建字符串实例,使 字符串操作有实际的对象。因为字符串分为 String类和 StringBuffer类,所以这里分开介绍 字符串的创建方式。 ·(1) String 类字符串的创建 (2) StringBuffer类字符串的创建。 Q想桃工业出隙社
5.1.3 创建字符串 • 在声明了字符串后,就需要创建字符串实例,使 字符串操作有实际的对象。因为字符串分为 String类和StringBuffer类,所以这里分开介绍 字符串的创建方式。 • (1)String类字符串的创建。 • (2)StringBuffer类字符串的创建
编程红宝书(珍藏版) ava 完金自学手册 5.2字符串操作 本节介绍字符串的各种操作,因为字符串分为两 类 String类和 StringBuffer类,所以这里介绍的 方法如果二者一致就以 String类介绍,如果二者 不同则分别举例介绍,在用代码举例时,为节省 篇幅不再给出完整的代码程序,只要读者明白函 数的使用方法,灵活地选择使用位置就可以了 Q想桃工业出隙社
5.2 字符串操作 • 本节介绍字符串的各种操作,因为字符串分为两 类String类和StringBuffer类,所以这里介绍的 方法如果二者一致就以String类介绍,如果二者 不同则分别举例介绍,在用代码举例时,为节省 篇幅不再给出完整的代码程序,只要读者明白函 数的使用方法,灵活地选择使用位置就可以了
编程红宝书(珍藏版) ava 完金自学手册 5.2.1字符串连接 ·字符串连接实现两个或多个字符串连接为一个字符串,同 时生成一个新串。Java调用 String类的 concat(函数实现 字符串连接,该函数的参数是一个 String对象,返回值是 String(连接后的新字符串) 1 String sl= new String(“ hello”); //创 建一个字符串,内容为” hello”,字符串名为s1 2 String st2= new String(“ world”); //创 建一个字符串,内容为” world”,字符串名为s2 3 String s3 //声明一个字符串s3但没初始化 4 s3= s1 concat(s2) //调 用 String类的 concat函数实现字符串的连接 Q想桃工业出隙社
5.2.1 字符串连接 • 字符串连接实现两个或多个字符串连接为一个字符串,同 时生成一个新串。Java调用String类的concat()函数实现 字符串连接,该函数的参数是一个String对象,返回值是 String(连接后的新字符串)。 • 1 String s1 = new String(“hello”); //创 建一个字符串,内容为”hello”,字符串名为s1 • 2 String s2 = new String(“world”); //创 建一个字符串,内容为”world”,字符串名为s2 • 3 String s3 //声明一个字符串s3但没初始化 • 4 s3 = s1.concat(s2); //调 用String类的concat函数实现字符串的连接
编程红宝书(珍藏版) ava 完金自学手册 5.2.2比较字符串 比较字符串实现两个字符串内容是否相同的比较结果,如果相 同则返回true,如果不同则返回 false。Java调用 String类的 equals函数实现,该函数的参数是一个 Stringi对象,返回值 是 boolean值(比较后的结果)。 1 String s1= new String("hello") //创建 个字符串,内容为” hello”,字符串名为s1 2 String s2= new String("world") //创建 个字符串,内容为” world”,字符串名为s String s3= sl concat(s2) //调用 String类的 concat函数实现字符串的连接 4 String s4="helloworld //创建 个字符串,内容为” helloworld”,字符串名为s4 5 System.out. printin(sl. equals(s2));//输入比较结果, 结果为 false 6 System.out. printIn(s3. equals(s4);//输入比较结果, 结果为true Q 机械工业出版社 China Machine Press
5.2.2 比较字符串 • 比较字符串实现两个字符串内容是否相同的比较结果,如果相 同则返回true,如果不同则返回false。Java调用String类的 equals()函数实现,该函数的参数是一个String对象,返回值 是boolean值(比较后的结果)。 • 1 String s1 = new String(“hello”); //创建 一个字符串,内容为”hello”,字符串名为s1 • 2 String s2 = new String(“world”); //创建 一个字符串,内容为”world”,字符串名为s2 • 3 String s3 = s1.concat(s2); //调用 String类的concat函数实现字符串的连接 • 4 String s4 = “helloworld”; //创建一 个字符串,内容为”helloworld”,字符串名为s4 • 5 System.out.println(s1.equals(s2));//输入比较结果, 结果为false • 6 System.out.println(s3.equals(s4)); //输入比较结果, 结果为true
编程红宝书(珍藏版) ava 完金自学手册 5.23获取字符串长度 在字符串创建后,往往需要获得字符串的长度值, String类对象的字 符串的长度值是固定的,一旦字符串对象创建后长度就不再变化,而 StringBuffer类有缓冲空间,默认是16个字符的长度,在操作 String 类对象时是生成一个新的字符串,而操作 Stringbuffer类的对象时 不用生成新的字符串而是在原串的基础上实现操作。二者都提供了获 得字符串长度的函数 length()获得当前对象中的字符数量,但 StringBuffer类还提供了 Capacity(函数说明字符容量,因为有缓冲 区,所以容量大小肯定大于当前对象中的字符数量 1 Strings new String("hello"); //创建一个字 符串,内容为” hello”,字符串名为s1 2 StringBuffer sf new StringBuffer("world") //创 建一个 StringBuffer类 3 System. out. println(s length) //输出 String 类对象的长度,结果为5 4 System. out. println(sf length) //输出 StrinGbuffer类对象的长度,结果为5 5 System,out. println(s. capacity();/输出 StrinGbuffer类对 象的容量,结果为5+16=21 Q 机械工业出版社 China Machine Press
5.2.3 获取字符串长度 • 在字符串创建后,往往需要获得字符串的长度值,String类对象的字 符串的长度值是固定的,一旦字符串对象创建后长度就不再变化,而 StringBuffer类有缓冲空间,默认是16个字符的长度,在操作String 类对象时是生成一个新的字符串,而操作StringBuffer类的对象时, 不用生成新的字符串而是在原串的基础上实现操作。二者都提供了获 得字符串长度的函数length()获得当前对象中的字符数量,但 StringBuffer类还提供了Capacity()函数说明字符容量,因为有缓冲 区,所以容量大小肯定大于当前对象中的字符数量。 • 1 String s = new String(“hello”); //创建一个字 符串,内容为”hello”,字符串名为s1 • 2 StringBuffer sf = new StringBuffer(“world”); //创 建一个StringBuffer类 • 3 System.out.println(s.length()); //输出String 类对象的长度,结果为5 • 4 System.out.println(sf.length()); //输出 StrinBuffer类对象的长度,结果为5 • 5 System.out.println(s.capacity()); //输出StrinBuffer类对 象的容量,结果为5+16 = 21
编程红宝书(珍藏版) ava 完金自学手册 5.24复制字符串 字符串的复制实现字符串的部分复制和全部复制,Java提供了 copy valueof0方法实 现字符串的拷贝,但该方法只提供两种参数,返回值都是 String String copy valueOf (char[l, int offset, int count) 该参数方式拷贝部分字符数组的内容为一个新字符串 String copy ValueOf(char[ ]) 该参数方式拷贝整个字符数组为一个新的字符串。下面代码实现字符串sl的拷贝 String sl= new String(“ hello”) /创建一个字符串,内容 1为23 hello”,字符串名为s1 char[ s chars new char [sl. length O] /代码4、5、6把字符串转化成一个字符数组,也可以用 String类的 toCharArray0方法代替。 4 for(int i=0; i<s chars. lenght O; i++) 5 s charslil= sl charAt(i) 6 7∥/拷贝整个字符数组为一个新数组,完成字符串s1的拷贝,s2内容 是”hell 8 String s2= String copy valueOf(s chars) 9 //拷贝整个字符数组的部分为一个新数组,完成字符串s1的部分拷贝,参数0 表示起始位 //置,而参数3表示从开始位置起共有几个需要拷贝的 字符。s3的内容是”hel” 10 String s3= String copy valueOf (s chars, 0, 3) Q 机械工业出版社 China Machine Press
5.2.4 复制字符串 • 字符串的复制实现字符串的部分复制和全部复制,Java提供了copyValueOf()方法实 现字符串的拷贝,但该方法只提供两种参数,返回值都是String。 • String copyValueOf(char[ ],int offset ,int count) • 该参数方式拷贝部分字符数组的内容为一个新字符串。 • String copyValueOf(char[ ]) • 该参数方式拷贝整个字符数组为一个新的字符串。下面代码实现字符串s1的拷贝。 • 1 String s1 = new String(“hello”); // 创建一个字符串,内容 为”hello”,字符串名为s1 • 2 char[] s_chars = new char[s1.length()]; • 3 // 代码4 、5、6 把字符串转化成一个字符数组, 也可以用String 类的 toCharArray()方法代替。 • 4 for(int i=0 ;i<s_chars.lenght();i++){ • 5 s_chars[i] = s1.charAt(i); • 6 } • 7 // 拷贝整 个字符 数组为 一个新 数组, 完成字 符串s1 的拷贝 ,s2 内 容 是”hello”。 • 8 String s2 = String.copyValueOf(s_chars); • 9 //拷贝整个字符数组的部分为一个新数组,完成字符串s1的部分拷贝,参数0 表示起始位 //置,而参数3表示从开始位置起共有几个需要拷贝的 字符。s3的内容是”hel” • 10 String s3 = String.copyValueOf(s_chars,0,3);