java的String类


String类

概念理解

String即为字符串。 String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。

java语言中已经有基本数据类型char表示字符了,但是生活中我们用的字符都是很多字符成串出现的。这也就催生了字符串的出现。


String常见操作

1、获取:
	1)字符串中的包含的字符数,也就是字符串的长度。
		int length()	获取长度
	2)根据位置获取位置上某个字符。
		char charAt(int index)
	3)根据字符获取该字符在字符串中位置。
		int indexOf(int ch)			返回的是ch在字符串中第一次出现的位置。
		int indexOf(int ch, int fromIndex) 	从fromIndex指定位置开始,获取ch在字符串中出现的位置。
		int indexOf(String str)			返回的是str在字符串中第一次出现的位置。
		int indexOf(String str, int fromIndex) 	从fromIndex指定位置开始,获取str在字符串中出现的位置。
		int lastIndexOf(int ch) 		从字符串末尾开始,第一次出现ch的位置
		
2、判断:
	1)字符串中是否包含某一个子串	boolean contains(str):
		特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。
				所以,也可以用于对指定判断是否包含。
				if(str.indexOf("aa")!=-1)
				而且该方法即可以判断,有可以获取出现的位置。
	2)字符中是否有内容		boolean isEmpty(): 原理就是判断长度是否为0. 
	3)字符串是否是以指定内容开头	boolean startsWith(str);
	4)字符串是否是以指定内容结尾	boolean endsWith(str);
	5)判断字符串内容是否相同。复写了Object类中的equals方法		boolean equals(str);
	6)判断内容是否相同,并忽略大小写	boolean equalsIgnoreCase();
	
3、转换:
	1)将字符数组转成字符串。
		构造函数:	String(char[])
				String(char[],offset,count)	将字符数组中的一部分转成字符串。
		静态方法:
				static String copyValueOf(char[]);
				static String copyValueOf(char[] data, int offset, int count) 
				static String valueOf(char[]):

		
	2)将字符串转成字符数组		char[] toCharArray()
	3)将字节数组转成字符串。
			String(byte[])
			String(byte[],offset,count)		将字节数组中的一部分转成字符串。
	4)将字符串转成字节数组。
			byte[]  getBytes():
	5)将基本数据类型转成字符串。
		static String valueOf(int)
		static String valueOf(double)
		//3+"";//String.valueOf(3);
		特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

4、替换:
	String replace(oldchar,newchar);
5、切割:
	String[] split(regex);

6、子串:
	获取字符串中的一部分。
		String substring(begin);
		String substring(begin,end);

7、转换,去除空格,比较。
	1)将字符串转成大写或则小写。
		 String toUpperCase();
		 String toLowerCase();
	2)将字符串两端的多个空格去除		String trim();
	3)对两个字符串进行自然顺序的比较	int compareTo(string);


String类的使用实例

获取一个字符串在另一个字符串中出现的次数。
"abkkcdkkefkkskk"

思路:
1)定义个计数器。
2)获取kk第一次出现的位置。
3)从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4)当获取不到时,计数完成。

public static int getSubCount_2(String str,String key)
	{
		int count = 0;
		int index = 0;

		while((index= str.indexOf(key,index))!=-1)
		{
			sop("index="+index);
			index = index + key.length();

			count++;
		}
		return count;
	}

	public static void main(String[] args) 
	{
		String str = "kkabkkcdkkefkks";

		sop("count="+getSubCount_2(str,"kk"));
	}

	public static void sop(String str)
	{
		System.out.println(str);
	}

StringBuffer类

概念StringBuffer是字符串缓冲区。是一个容器。

特点

1)长度是变化的

2)可以字节操作多个数据类型

3)最终会通过toString方法变成字符串。

由于String类是不可变的,这就导致了StringBuffer的出现,因此StringBuffer的操作很多方面是和String的又有相同,同时存在差别:

操作

1、存储:

StringBuffer append()将指定数据作为参数添加到已有数据结尾处;

StringBuffer insert(index,数据)可以将数据插入到指定index位置

 2、删除:

StringBuffer delete(start,end)删除缓冲区中的数据,包含start,不包含end。

StringBuffer deleteCharAt(index)删除指定位置的字符。

3、获取:

char charAt(int index);

int indexOf(String str);

int  lastIndexOf(String str);

int  length();

String substring(int start, int end);

4、修改:

StringBuffer replace(start, end, string);

void  setCharAt(int  index, char  ch);

5、反转:

StringBuffer  reverse();   

6、将缓冲区中指定数据存储到 指定字符数组中: 

void getChars(int  srcBegin, int srcEnd,  char[] dst,  int  dstBegin)


    JDK1.5版本后出现了StringBuilder    StringBuffer 是线程同步,StringBuilder是线程不同步。将StringBuilder的实例用于多个线程是不安全的,如果需要这样的同步,则建议使用StringBuffer。StringBuilder的出现有三个好处,一是,提高效率。二是,简化书写。三是,提高安全性。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值