黑马程序员:Java中的字符串

------- android培训java培训、期待与您交流! ----------



一、String

字符串是一个特殊的对象。
字符串一旦初始化就不可以被改变。

创建字符串:

String str = "abc";
String str1 = new String("abc“);
两者的区别;str在内存中有一个对象,str1在内存中有两个对象。

二、字符串中的方法

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 indexOfString str,int fromIndex);//从fromIndex指定的位置开始,获取str在字符串中出现的位置。

2、判断

1)字符串中是否包含一个子串。

boolean contains(str);

2)字符串中是否有内容。

boolean isEmpty();

3)字符串是否是以指定内容开头。

boolean startWith(str0;

4)字符串是否是以指定内容结尾。

boolean endsWith(str);

5)判断字符串中的内容是否相同,并忽略大小写

boolean  equalsIgnoreCase();
例;

3、字符串的转换

1)将字符数组转换成字符串

构造函数;String (char[])
String(char[],offset,count);//将字节数组中的一部分转换成字符串
静态方法:
static  String copyValueOf(char[] data,int offset, int count);
static String copyValueOf(char[]);
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);
特殊:字符串和字符数组转换过程中,是可以指定编码表的。

4、替换

String replace(oldchar,newchar);//如果替换的字符串不存在,返回的还是原字符串

5、切割

String[] split(regex);

6、子串,获取字符串中的一部分

String sunstring(begin);//从指定位置开始到结尾,如果不存在,会出现字符串角标异常。
String substring(begin,end);

7、转换,去空格,比较

1)将字符串转换成大写或小写

String toUpperCase();
String toLowerCase();

2)将字符串两端的多个空格去除。

String trim();

3)对两个字符串进行自然顺序比较。

int compareTo(string); 

练习;获取一个字符串在另一个字符串中出现的次数

package com.java;
/**
 * 
 * @author wangxuan
 * 获取一个字符串在另一个字符串中出现的次数
 *
 */

public class StringTest {

	/**
	 * @param args
	 */
	public static int getsubCount(String string,String key)
	{
		int count = 0;
		int index = 0;
		while((index=string.indexOf(key))!=-1)
		{
			sop("string="+string);
			string=string.substring(index+key.length());
			count++;
		}
		return count;
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String string = "qweeeertyuiopasdfghjklzxcvbnm";
		sop("count="+getsubCount(string, "ee"));
		

	}

}

输出结果为:
string=qweeeertyuiopasdfghjklzxcvbnm
string=eertyuiopasdfghjklzxcvbnm
count=2

三、StringBuffer

StringBuffer 是字符串缓冲区,是一个容器。
StringBuffer类的构造方法

1)StringBuffer()

使用该无参数的构造方法创建一个StringBuffer对象,分配给该对象的实体的初始容量可以容纳16个字符,当该对象的实体存放的字符序列的长度大于16时,实体的容量自动增加,以便存放增加的字符。

2)StringBuffer(int size)

使用该构造方法创建一个StringBuffer对象,指定实体的初始容量为参数size指定的字符个数,当实体存放的字符序列的长度大于size时,实体的容量自动增加,以便存放所增加的字符。

3)StringBuffer(string s)

使用该构造方法创建一个StringBuffer对象,指定配实体的初始容量为参数字符串s的长度再加16个字符。当该对象的实体存放的字符序列的长度大于size时,实体的容量自动增加,以便存放增加的字符。

StringBuffer类常用的方法

1)append

将其他java类型数据转换成为字符串后再追加到StringBuffer对象中。

2)char charAt(int n)

得到参数n指定的位置上的单个字符。当前对象实体中的字符串序列的第一个位置为0,第二个位置为1,以此类推。n的值必须是非负的一个数。

3)void setCharAt(int n,char ch)

将当前StringBuffer对象实体中的字符序列位置n处的字符用参数ch指定的字符替换。n必须是非负的,并且小于当前字符串长度。

4)StringBuffer insert(int index,String str)

insert方法将一个字符串插入实体中,并返回当前对象的引用。

5)public StringBuffer reverse()

StringBuffer对象使用reverse()方法将该对象实体中的字符序列翻转,并返回当前对象的引用。

6)StringBuffer delete(int startIndex,int endIndex)

从当前StringBuffer对象实体中的字符序列中删除一个子序列,并返回当前对象的引用。startIndex指当前需删除的第一个字符下标,endIndex指定需删除的最后一个字符的下一个字符的下标。需要删除的子字符串从startIndex到endIndex-1。

7)StringBuffer replace(int startIndex,int endIndex,String str)

将当前StringBuffer对象实体中的字符序列的一个子序列用参数str指定的字符串替换。被替换的子序列由下标startIndex和endIndex指定,即从startIndex到endIndex-1的序列被替换。该方法返回StringBuffer对象的引用。
例:
package com.java;

public class StringBufferDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer stringBuffer= new StringBuffer("hello world");
		stringBuffer.insert(0, "java:");
		stringBuffer.setCharAt(10, ',');
		System.out.println(stringBuffer);
		stringBuffer.append("!");
		System.out.println(stringBuffer);
		stringBuffer.reverse();
		System.out.println(stringBuffer);

	}

}

输出结果为:
java:hello,world
java:hello,world!
!dlrow,olleh:avaj

四、StringBuilder

此类提供一个与StringBuffer兼容的API。
与StringBuffer的不同之处;
StringBuffer是线程同步,线程安全的。
StringBuilder是线程不同步的,线程不安全的。

多线程用StringBuf,单线程用StringBuilder




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值