字符串的使用

String类

重点:

new String() --à地址  final,不能被继承

String底层char[]数组 final,不能改变数组内容。

New String(“a”)+new String(“b”)---àStringBuilder

concat 开辟一个两个字符长度的空间,把两个字符串连接在一起

方法:

isEmpty 判空

length()长度,调用数组的属性 length

charAt()在某个索引位置上的字符

substring 以子串

getBytes() 取字节,在操作中文的相关内容

indexOf/lastIndexOf 索引

replace的替换方法

1、所有的修改字符串操作都是不能替换原串的,

2、原理:

底层:replaceAll

实际发生的String的替换方法

public String replaceAll(String replacement) {
    reset();
    boolean result = find();
    if (result) {
        StringBuffer sb = new StringBuffer();
        do {
            appendReplacement(sb, replacement);
            result = find();
        } while (result);
        appendTail(sb);
        return sb.toString();
    }
    return text.toString();
}

实际String的替换底层使用StringBuilder

StringBuilder里面的replace特点,可以指定开始位置和结尾位置进行替换,String里面的replace特点,从字符串开始到字符串结尾遍历查找,查找到调用StringBuilder来替换。

在数组有一些文件名,.doc批量改成.txt

String[] arrs={"aa.doc","bbb.doc","ccc.doc","ddddddd.doc"};
for(int i=0;i<arrs.length;i++){
    StringBuilder sb=new StringBuilder(arrs[i]);
    int len=arrs[i].length();
    //StringBuilderreplace参数,第一个 start开始,第二个是结束,第一个替换的字符串
    sb.replace(len-4,len,".txt");
    arrs[i]=sb.toString();
}
System.out.println(Arrays.toString(arrs));

注意:

如果使用到字符的替换,使用StringBuilder中的替换代替String中的替换,方法很有效率。   

只有一种情况:替换的字符串在字符串中不知道位置。

indexOf结合StringBuilder()替换

StringBuffer方法中带synchronized 关键字,是并发的意思。

hashCode/equals相等时,hashCode效率高,equals效率低

String:根据字节数组中每一个元素的哈希值来判断相等,+31*前一元素的哈希值。

matches  匹配正则表达,自己写正则表达式

contains包含 indexOf  lastIndexOf

contains相当于indexOf, lastIndexOf调用indexOf

 contains返回的true或者false, indexOf返回被查字符串的索引。

split 重要指数非常高,作用把字符串按照特定字符串分割成数组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值