Java中字符串解析

1、字符串不属于基本数据类型(基本数据类型有【byte,int,char,float,double,boolean,short,long】),字符串由单个或多个字符组成,本质上是字符数组,Java中提供两种实现字符串的类,分别是String、StringBuffer类。

String类

字符串的声明:
1、常量声明方式
String sName="Bob";
2、对象声明方式
String sName=new String("Bob");
3、由字符数组初始化
String sName=new String(char[] ch);
4、由字符数组指定元素个数
String sName=new String(char[] ch,int index,int length);
4、指定字符数组的起始位置
String sName=new String(char[] ch,int begin,int end);

测试用例:

<span style="white-space:pre">	</span>public static void main(String []args)
	{
		//常量声明方式
		String sName="Bob";
		System.out.println(sName);				//输出Bob
		//  对象声明
		String sName1=new String("Bob");
		System.out.println(sName);              //输出Bob
		//  由字符数组声明
		char [] ch=new char []{'a','b','c','d'};
		String sNum=new String(ch);         
		System.out.println(sNum);                //输出abcd
		//  指定字符数据的起位置和长度,
		String sNum1=new String(ch,1,2); 
		System.out.println(sNum1);               //输出bc
		//  指定起始位置
		String sNum2=new String(ch,1,3);
		System.out.println(sNum2);				  //输出bcd
		System.out.println("数组的长度:" + ch.length);         //输出4
		int iLen=sNum.length();
		System.out.println("对应字符串长度:" + iLen);			 //输出4
	}
字符串的操作:
1、字符串的比较
对于字符串的比较采用如下方法:
(1)equals():比较两个字符串的内容是否相同,返回值为Boolean类型;
(2)equalsIgnoreCase:忽略大小写,比较两个字符串的内容是否相同,返回值为Boolean类型。
(3)compareTo(String anotherString):按照字典表的顺序比较,返回值为int类型。
注意:在比较字符串的时候,不要使用"=="进行比较,因为"=="比较的是对象,判断两个对象是否为同一个对象,如果内容相同而不是同一个对象,返回的是false,对应的不是同一个内存地址。
实例:

<span style="white-space:pre">	</span>public static void main(String []args)
	{
		String sUpper="WELCOME TO CHINA";
		String sLow="Welcome to china";
		String sSame="WELCOME TO CHINA";
		String sLow1="xelcome to china";
		if(sUpper.equals(sSame)){
			System.out.println("使用equlas比较结果:True");
		}
		else{
			System.out.println("使用equals比较结果:False");
		}

		if(sUpper.equalsIgnoreCase(sLow)){
			System.out.println("使用equalsIgnoreCase比较结果:True");
		}
		else{
			System.out.println("使用equalsIgnoreCase比较结果:False");
		}
		
		int j=sLow1.compareTo(sUpper);
		System.out.println(j);						//输出为32

		int i=sLow1.compareTo(sUpper);
		System.out.println(i);                     //输出为33,由此得知compareTo输出ASIIC码值差值。
	}

2、字符串的连接,使用concat方法进行操作。该方法可以连续连接若干个字符串,返回值也是一个字符串
实例:

<span style="white-space:pre">	</span>public static void main(String []args)
	{
		String sUpper="WELCOME TO CHINA";
		String sLow="Welcome to china";

		String sConcat=sUpper.concat(sLow);
		System.out.println(sConcat);			//输出WELCOME TO CHINAWelcome to china
		String sConcatMore=sUpper.concat(sLow).concat("多个concat");
		System.out.println(sConcatMore);
	}
3、字符串的复制,主要有copyValueOf()方法实现,它有两个重载方法,分别提供部分复制和全部复制。

copyValueOf(char[] ,int offset,int length)
copyValueOf(char [])

<span style="white-space:pre">	</span>public static void main(String []args)
	{
		String sLow="Welcome to china";
		char [] ch=new char[sLow.length()];			//开辟字符串数组大小
		for(int i=0;i<sLow.length();i++){
			ch[i]=sLow.charAt(i);		
		}
		System.out.println(ch);						//字符输出的值,输出Welcome to china
		
		String sCopyALL=String.copyValueOf(ch);
		System.out.println(sCopyALL);				//输出复制字符串,结果Welcome to china

		String sCopyPart=String.copyValueOf(ch,2,3);
		System.out.println(sCopyPart);				//输出部分复制字符串,结果lco,
									//由此说明copyValueOf(char[],起始位置,长度)
	}

4、字符串替换,采用replace()方法:
replace(char,char)              //将第一个字符替换为第二个字符
replaceAll(String,String) //将字符串全部替换
replaceFirst(String,String) //将字符串中第一个与参数1相同的字符串替换为参数2对应的字符串。

实例:

<span style="white-space:pre">	</span>public static void main(String []args)
	{
		String sLow="Welcome to china";
		
		String sReplaceChar=sLow.replace('W','H');
		System.out.println(sReplaceChar);             //输出替换字符的结果:Helcome to china
		
		String sReplaceAll=sLow.replaceAll("china","nanjing");
		System.out.println(sReplaceAll);				//输出替换字符的结果:Welcome to nanjing

		String sReplaceFirst=sLow.replaceFirst("c","HJK");
		System.out.println(sReplaceFirst);				//输出替换字符的结果:WelHJKome to china
	}
5、分割字符串,分割字符串返回的是字符串数组,采用split()方法

<span style="white-space:pre">	</span>/*
		split函数的参数要求必须是字符串类型,不能使字符类型,以字符串来分割
	*/
	public static void main(String []args)
	{
		String sLow="Welcome to china";
		System.out.println("原句:"+sLow);
		String [] sPlitArray=sLow.split(" ");
		for(int i=0;i<sPlitArray.length;i++)
		{
			System.out.println("第"+i+"部分:"+sPlitArray[i]);
		}

		/*
			---------- 运行 ----------
			原句:Welcome to china
			第0部分:Welcome
			第1部分:to
			第2部分:china

			输出完成 (耗时 0 秒) - 正常终止
		*/
	}

StringBuffer

StringBuffer对象的字符串长度是可变的,尽管用String定义的常量可以用函数去操作,但是会产生更多的中间变量,所以还是不宜使用,对于要经常修改的字符串,我们可以定义成StringBuffer类型的,方便修改使用。StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
构造方法摘要
StringBuffer() 
          构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(CharSequence seq) 
          public java.lang.StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer(int capacity) 
          构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str) 
          构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
StringBuffer常用方法:
1、append()众多从在方法,可以接受任何类型数据。
2、insert()方法一样。
3、int capacity()返回当前容量
4、char charAt(int index),返回指定位置的字符。
5、StringBuffer delete(int start,int end),删除指定的字符串
6、 void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。
7、int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
8、int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
9、int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。
10、 int lastIndexOf(String str, int fromIndex) 返回最后一次出现的指定子字符串在此字符串中的索引
11、void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch。
12、 StringBuffer reverse() 将此字符序列用其反转形式取代。
13、 String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
注意:String对象分配内存根据实际字符串长度,而StringBuffer分配内存时多开辟16个缓冲内存,所以使用capacity获取的为实际内存+16,而求字符串长度length()时,返回字符串长度。
<span style="white-space:pre">	</span>public static void main(String []args)
	{
		StringBuffer sb = new StringBuffer();
		System.out.println("原:" + sb);
		sb.append("welcome to china");
		System.out.println("append:" + sb);
		sb.insert(7,"KK");
		System.out.println("insert:" + sb);
		int iCapacity = sb.capacity();
		System.out.println("capacity:" + iCapacity);
		int iLen = sb.length();
		System.out.println("length:" + iLen);
		char ch = sb.charAt(2);
		System.out.println("charAt:" + ch);
		int iIndex = sb.indexOf("e");
		System.out.println("indexOf:" + iIndex);
		String sSubstring = sb.substring(5,15);
		System.out.println("substring:" + sSubstring);
		System.out.println("reverse:" + sb.reverse());
	}

	/*
		---------- 运行 ----------
		原:
		append:welcome to china
		insert:welcomeKK to china
		capacity:34
		length:18
		charAt:l
		indexOf:1
		substring:meKK to ch
		reverse:anihc ot KKemoclew

		输出完成 (耗时 0 秒) - 正常终止
	*/
原文地址:https://www.cnblogs.com/dengshiwei/p/4258578.html