返回

Java常用API之字符串

发布时间:2023-02-14 21:10:38 280
# java# java# 数据

字符串

在​​java.lang​​中提供:String类用于处理不可变的字符串,还提供了StringBuffer类、StringBuilder类 用于处理可变字符串。

它们都被声明为final类型,因此不能将其当做父类再被继承使用了。

String

String类用于创建字符串对象,其值在创建之后被当做常量,每次的修改其实都是产生并指向了新的字符串对象,原来的字符串对象都是没有改变的,所以称不可变字符串

创建字符串有两种方法:

String name1 = "Aaa"; //方法一 推荐
String name2 = new String("Aaa");// 方法二

两者区别(面试常考):

  1. 以""方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份
  2. 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中

分类

方法

描述

构造器

String(空/Str/char[]/byte[])

创建字符串对象

字符数组

charAt(int index)

返回索引处的字符


toCharArray()

把字符串转换为字符数组

内容比较

equalsIgnoreCase(String anotherStr)

忽略大小写比较字符串内容


equals(Object anObject)

比较字符串内容,继承自Object,已经被重写


compareTo()

返回的是int,常用于字符串的字典序比较

替换

replace(target,newStr)

使用newStr替换target字符串


replaceAll(String regex,String newStr)

用newStr替换regex匹配的内容

匹配

split(String regex)

按照传入的正则表达式切除字符串,返回剩余部分


startwith()

匹配字符串是否以 指定串 作前缀


endwith()

匹配字符串是否以 指定串 作后缀


matches(String regex)

判断是否匹配正则表达式,匹配返回true,不匹配返回false

修改

substring(int begin[,int end])

截取 [begin,end) 之间的字符串,不指定end则截取到末尾


trim()

忽略前导、后导的空格

编码

getBytes(String charSetName)

指定字符集,将该String编码为一系列字节存储到字节数组中

解码

String(btye[],String charSetname)

指定的字节数组构造新的String,若不指定则使用当前代码默认字符集

长度

length()

字符串长度

StringBuilder

StringBuilder是一个可变的字符串类,能提高字符串的操作效率。

在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。

分类

方法

描述

构造

StringBuilder()

无参数传入,初始容量为 16个字符


StringBuilder(String str)

有参数传入,初始容量为 16加上字符串参数的长度

获取

length()

字符串长度


charAt(int index)

返回指定索引的字符

修改

reverse()

将对象内容反转


append(Object)

添加数据并返回StringBuilder对象本身,支持所有类型元素的添加

转化

toString()

tringBuilder只是一个操作字符串的手段,最终还是要使用 toString() 恢复成String

append(obj)可以接受任意类型的数据,其内部会调用String.valueOf(obj)转化为String后再拼接

支持链式编程

StringBuilder sb = new StringBuilder();

//append() 拼接
sb.append("a").append("b").append("c").append("Hello World");//每次执行完append操作会返回一个原对象
System.out.println(sb);//abcHello World

//reverse() 反转内容
sb.reverse().append("reverse");//先反转再拼接
System.out.println(sb);

Java常用API之字符串_线程安全

String 是不可变的类,是通过 StringBuilder 修改数据后再 toString() 返回,一次连接需要新建两个对象,所以String的操作非常浪费内存。


Java常用API之字符串_字符串_02

定义字符串使用String,拼接、修改等操作字符串使用StringBuilder。

StringBuffer

Java常用API之字符串_正则表达式_03

运行速度方面:StringBuilder > StringBuffer > String

线程安全方面:StringBuffer是线程安全的,StringBuilder是线程不安全的

StringBuffer类与StringBuilder类的原理和操作基本相同,区别就是StringBuffer是线程安全的,支持并发性操作,适合应用在多线程之中。

StringBuilder不支持并发性操作,线程是不安全的,但其在单线程中的性能要比StringBuffer高。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
RPC框架的健康检测机制 2023-02-14 20:32:19