欢迎光临
我们一直在努力

字符串构造,String对象的比较,字符串查找(序列化),转化(序列化与反序列化),替换,拆分,截取,修改和不可变性,其他操作方法,StringBuilder和StringBuffer

1.字符串构造

字符串的构造有三种方式,java中的字符串结尾并不是以\\0为标志。

通过画图可以进一步来理解

2.String对象的比较

判断两个对象是否相等可以用equals,比较两个对象大小用compareTo(compareToIgnoreCase可以忽略大小写比较)

直接比较s1,s2,s3,其实比较的是三个对象的地址,而通过equals是比较的三个对象的内容。

3(1)字符串的查找

通过下标来查找字符串:charAt,indexOf,lastIndexOf

charAt能查到对应下标的字符

indexOf是能查找到对应字符的下标,增加数字能构成重载,表示从第几位数开始向后查找。

lastIndexOf也是查找对应字符的下标,但是从后向前找,增加数字表示从第几位开始向前找。

通过.length()来判断字符串长度,不同于正常的.length,字符串中的length是一种方法含有小括号。

(2)字符串的转换

Java中只要涉及String类型的转变,都不是在原有基础上进行的修改,而是创建了一个新对象

数值转字符串:String.valueOf(实例化一个新对象的话,要加入Tostring方法,否则会直接输出对象的地址)(通过类来调用方法,则这个方法是静态方法,例如此处的valueOf)

字符串转数值:Integer.parseInt,double.parseDouble(存在非数字字符会报错)

大小写转换:toUpperCase(),toLowerCase()

字符串转数组:toCharArray()

数组转字符串:调用相应的构造方法

格式化:format,替换对应的数字

序列化与反序列化:序列化是将对象转化为字符串,反序列化是将字符串转化为对象

(3)字符串的替换

全部替换:replace,replaceAll

部分替换:replaceFirst

(4)字符串的拆分

单个拆分:被拆分后的第一个部分为数组的0下标,其余部分依次下去,返回值是数组

多次拆分:利用两个循环,也可用“|”

注意事项:

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

2. 而如果是 "\\" ,那么就得写成 "\\\\\\\\" .(打印一个\\,其实要写入两个\\\\)

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

(5)字符串的截取

截取字符:substring(*)

截取特定一段:substring(*,*)(注意此处为左闭右开)

去除字符串两边的空格:trim

(6)字符串的修改

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

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

(7)字符串的不可变性

在对一个String类对象处理时,本身不改变的原因不是final,可以通过一个数组的例子来证明。

在有无final的情况下都可以对arr数组的变量进行修改,而String类中的变量不满足这个条件。

真正的原因是因为value被private所修饰,只能在当前类使用,但如果提高set与get方法则可以进行

修改

4.StringBuilder和StringBuffer

StringBuilder和StringBuffer在字符拼接过程中不会产生新的对象,不同于String不断产生并且销毁对象。

逆置:stringBuilder.reverse()(不需要返回值)

插入:stringBuilder.insert(*,*)

转为字符串:stringBuilder.toString()

String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可 以修改。频繁修改字符串的情况考虑使用StringBuilder

注意:String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:

        String变为StringBuilder: 利用StringBuilder的构造方法或append()方法

        StringBuilder变为String: 调用toString()方法注意:

StringBuilder和StringBuffer两者区别:StringBuffer有关键字synchronized,在多线程的情况下,可以保证线程安全:stringBuilder不具备此项功能,在单线程情况下采用stringBuilder

String、StringBuffer、StringBuilder的区别

String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.

StringBuffer与StringBuilder大部分功能是相似的

StringBuffer更安全,StringBuilder更高效

StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操 作

赞(0)
未经允许不得转载:171主机测评 » 字符串构造,String对象的比较,字符串查找(序列化),转化(序列化与反序列化),替换,拆分,截取,修改和不可变性,其他操作方法,StringBuilder和StringBuffer
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址