Java String 字符串

1. 字符串就是双引号之间的数据

2. 字符串和数组初始化之后长度不变,内容不变,要改变值,则要新建字符串。每次new一个字符串,都是新建一个对象

3. String是java.lang包下的一个类

String stringName = new String("string content");

4. 常用方法

str.length()                                     返回字符串长度

str.indexof(ch)                                查找ch在字符串第一次出现的位置,如果找不到返回-1

String[] arr=str.split(" ")                    System,out.println(Arrays.toString(arr))   按空格将字符串拆分成数组

str.substring(a,b)                             获取索引位置为a,b 之间的子串

String s2= s1.replace(String)         替换

str.charAt()                                     按照索引值获得字符串指定的字符

5. ==和equals()

==:判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

6. 将字符串转化为字节数组 bytes bt:str.getBytes()

public class Test {

	public static void main(String[] args) {
		// 定义一个字符串
		String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
        
        // 出现次数
		int num = 0;
		
         //循环遍历每个字符,判断是否是字符 a ,如果是,累加次数
		for (byte bt:(s.getBytes()))
		{
            // 获取每个字符,判断是否是字符a
			if ( bt=='a' ) {
                // 累加统计次数
				num++; 
			}
		}
		System.out.println("字符a出现的次数:" + num);
	}
7. StringBuilder

由于String的不可变性,档频繁操作字符时,会产生很多临时变量。StringBuffer是线程安全,而StringBuilder则没有,所以如果需要创建一个内容可变的字符串对象,应优先考虑使用StringBuilder类。

StringBuilder str1= new StringBuilder();

StringBuilder str2= new StringBUilder("immoc");

System.out.println(str2);

8. 方法

str.append(参数)

str. insert(位置,参数)

str.toString()

int length()

9. StringBuffer

StringBuffer 默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象。

StringBuffer、StringBuilder、String中都实现了CharSequence接口。

CharSequence是一个定义字符串操作的接口,它只包括length()、charAt(int index)、subSequence(int start, int end) 这几个API。

StringBuffer、StringBuilder、String对CharSequence接口的实现过程不一样,如下图所示:


图1  对CharSequence接口的实现

可见,String直接实现了CharSequence接口;StringBuilder 和 StringBuffer都是可变的字符序列,它们都继承于AbstractStringBuilder,实现了CharSequence接口。

总结

线程安全:
  • StringBuffer:线程安全
  • StringBuilder:线程不安全

速度:
一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。

使用环境:
  • 操作少量的数据使用 String;
  • 单线程操作大量数据使用 StringBuilder;
  • 多线程操作大量数据使用 StringBuffer。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值