Java-String知识点讲解(下)

本文详细介绍了Java中的字符串操作,包括字符串替换(如`replace()`和`replaceFirst()`)、字符串拆分(`split()`方法),以及字符串截取(`substring()`)、不可变性原理和为何避免直接修改String。还提到了StringBuilder和StringBuffer类,用于字符串修改,强调了线程安全性和效率提升。
摘要由CSDN通过智能技术生成

String知识点讲解

2.5字符串替换

 String str="abcabcabcabc";
        String ret=str.replace('a','p');
        System.out.println(ret);

(替换所有老的字符为第2个参数)还可以替换字符串

String str1="abcabcabcabc";
        String ret1=str1.replaceFirst("ab","ppp");
        System.out.println(ret1);

2.6 字符串拆分

split方法的使用:

指定位置去分割

String str="name=zhagnsan&age=10";
        String[] ret=str.split("&");
        for (int i = 0; i < ret.length; i++) {
            System.out.println(ret[i]);
        }
    }

limit可以在这里分割3次,指定位置去分割

String str="name = zhagnsan & age = 10";
        String[] ret=str.split(" ",3);
        for (int i = 0; i < ret.length; i++) {
            System.out.println(ret[i]);
        }
    }

如果limit大于最大分割,虽然不能分割超过,但是他能够保证能分割的最大次数。不够就不分了。

如果分割IP地址

 String str="192.168.1.1";
        String []ret=str.split("//.");
        for (int i = 0; i < ret.length; i++) {
            System.out.println(ret[i]);
        }

注意事项:

1. 字符"|","*","+"都得加上转义字符,前面加上"\\".

2. 而如果是"\",那么就得写成"\\\\".

3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

2.7 字符串截取

从一个完整的字符串之中截取出部分内容。

运用的是substring方法(左闭右开)

String str="abcdef";
        String ret=str.substring(2);
        System.out.println(ret);

String str="abcdef";
       String ret=str.substring(1,3);
        System.out.println(ret);

trim方法:消除左右两边的空格(trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符                                                            等).)

String str2="   a   bc    de    dsdwd      ";
        System.out.println(str2);
        String ret2=str2.trim();
        System.out.println(ret2);

2.9 字符串的不可变性

String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改,是因为:

1. String类在设计时就是不可改变的,String类实现描述中已经说明了

2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象

为什么 String 要设计成不可变的?(不可变对象的好处是什么?)

1. 方便实现字符串对象池. 如果 String 可变, 那么对象池就需要考虑写时拷贝的问题了.

2. 不可变对象是线程安全的.

3. 不可变对象更方便缓存 hash code, 作为 key 时可以更高效的保存到 HashMap 中.

2.10 字符串修改

注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率 非常低下。

public static void main(String[] args) {
    String s = "hello";
    s += " world";
    System.out.println(s);  // 输出:hello world
 }

但是这种方式不推荐使用,因为其效率非常低,中间创建了好多临时对象。

3. StringBuilder和StringBuffer

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。

             

                  

StringBuff append(String str)         在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、 double、float、int,long、Object、String、StringBuff的变量
char charAt(int index)获取index位置的字符
int length()获取字符串的长度
int capacity()获取底层保存字符串空间总的大小
void ensureCapacity(int mininmumCapacity)扩容
void setCharAt(int index, char ch)将index位置的字符设置为ch
int indexOf(String str)返回str第一次出现的位置
int indexOf(String str, int fromIndex)从fromIndex位置开始查找str第一次出现的位置
int lastIndexOf(String str)返回最后一次出现str的位置
int lastIndexOf(String str, int fromIndex)从fromIndex位置开始找str最后一次出现的位置
StringBuff insert(int offset, String str)在offset位置插入:八种基类类型 & String类型 & Object类型数据
StringBuffer deleteCharAt(int index)删除index位置字符
StringBuffer delete(int start, int end)删除[start, end)区间内的字符
StringBuffer replace(int start, int end, String str)将[start, end)位置的字符替换为str
String substring(int start)从start开始一直到末尾的字符以String的方式返回
String substring(int start,int end)将[start, end)范围内的字符以String的方式返回
StringBuffer reverse()反转字符串
String toString()将所有字符按照String的方式返回

StringBuffer reverse()反转字符串:

 StringBuilder stringBuilder=new StringBuilder("abcdef");
        stringBuilder.reverse();
        System.out.println(stringBuilder);

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值