字符串处理
在编写程序时经常用到字符串这种数据结构。它和字符数组一样也是字符的序列,在很多高级语言(如C语言)中的字符串就还是通过数组实现的。在Java中无论是常量字符串还是变量字符串,都是用类对象来实现的。由于程序中经常也需要对它做比较、查找之类的操作,所以通常把它放在一个具有一定名称的对象之中,由程序对该对象完成上述操作。程序中需要用到的字符串可以分为两大类:
(1)一类是创建之后不再做修改和变动的字符串常量,通常存放在String类的对象中。
(2)一类是创建之后允许做修改和变化的字符串变量,通常存放在StringBuffer类的对象中。
一、String类
概述java.lang.String 类代表字符串。Java程序中所有的字符串文字(比如"abc")都可以被看成是实现此类的实例。类String中包括用在检查每一个字符串的方法,比如用于比较字符串,搜索字符串,提取字符串以及创建具有翻译为大写或者是小写的所有字符的字符串副本。
特点(1)字符串是不变的,字符串的值在创建以后是不可以被更改的
public class var {
public static void main(String[] args) {
String str = "abc";
str += "d";
System.out.println(str);
}
}
特点(2)因为String对象是不可以变换的,所以它们才可以被共享。
public class var {
public static void main(String[] args) {
//内存中只有一个“abc”被创建。
String s1 = "abc";
String s2 = "abc";
}
}
特点(3)"abc"等于char[ ] data={′a′,′b′,′c′}
public class var {
public static void main(String[] args) {
char[] data={'a','b','c'};
String str = new String(data);
System.out.println(str);
}
}
二、StringBuffer类
StringBuffer是使用缓冲区的,本身也是操作字符串的,但与String类不同,String类中的内容一旦声明之后不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的,对于StringBuffer而言,本身是一个具体的操作类,所以不能像String那样采用直接赋值的方式进行对象实例化,必须通过构造方法完成。
实例操作一:字符串连接操作(append)
package 字符串处理;
public class StringBufferDemo01{
public static void main(String args[]){
StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象
buf.append("Hello ") ; // 向StringBuffer中添加内容
buf.append("World").append("!!!") ; // 可以连续调用append()方法
buf.append("\n") ; // 添加一个转义字符
buf.append("数字 = ").append(1).append("\n") ; // 添加数字
buf.append("字符 = ").append('C').append("\n"); // 添加字符
buf.append("布尔 = ").append(true) ; // 添加布尔值
System.out.println(buf) ; // 直接输出对象,调用toString()
}
}

实例操作二:字符串添加内容(insert)
public class StringBufferDemo02{
public static void main(String args[]){
StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象
buf.append("World!!") ; // 添加内容
buf.insert(0,"Hello ") ; // 在第一个内容之前添加内容
System.out.println(buf) ;
buf.insert(buf.length(),"偶my耶~") ; // 在最后添加内容
System.out.println(buf) ;
}
}

实例操作三:字符串反转(reverse)
public class StringBufferDemo03{
public static void main(String args[]){
StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象
buf.append("World!!") ; // 添加内容
buf.insert(0,"Hello ") ; // 在第一个内容之前添加内容
String str = buf.reverse().toString() ; // 将内容反转后变为String类型
System.out.println(str) ; // 将内容输出
}
}

实例操作四:替换字符串指定内容(replace)
public class StringBufferDemo04{
public static void main(String args[]){
StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象
buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容
buf.replace(6,11,"偶my耶") ; // 将world的内容替换
System.out.println("内容替换之后的结果:" + buf) ; // 输出内容
}
}

实例操作五:字符串截取(substring,delete)
public class StringBufferDemo06{
public static void main(String args[]){
StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象
buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容
buf.replace(6,11,"偶my耶") ; // 将world的内容替换
String str = buf.substring(6,11) ; // 截取指定范围的内容
// String str = buf.delete(6,11).toString() ;// 删除指定范围中的内容
System.out.println(buf);
System.out.println("内容替换之后的结果:" + str) ; // 输出内容
}
}

实例操作六:查找指定内容(indexOf)
public class StringBufferDemo08{
public static void main(String args[]){
StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象
buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容
if(buf.indexOf("Hello")==-1){
System.out.println("没有查找到指定的内容") ;
}else{ // 不为01表示查找到内容
System.out.println("可以查找到指定的内容") ;
}
}
}


