字符串

字符串

特点

  • 引用数据类型
  • 不可变性,Java中的String是不可变的,任何对String对象的修改都会新建一个String对象
  • java9之前底层是字符数组,java9及之后底层是字节数组,节省内存资源
  • 是线程安全的,多个线程共享同一个字符串对象

创建

方法 描述
String str = "test" str变量指向"test"字符串,如果字符串常量池中不存在"test",会在字符串常量池中创建一个String对象
String str = new String("test") 在堆内存中创建一个String对象,如果字符串常量池中不存在"test",会在字符串常量池中创建一个String对象

方法

查询

方法 描述
char charAt(int index) 返回指定索引的字符
int length() 返回字符串长度
int indexOf(String str,[int formIndex]) 全局搜索返回子串第一次出现的索引或从指定位置开始搜索,不存在返回-1
int lastIndexOf(String str,[int formIndex]) 全局搜索返回子串最后一次出现的索引或从指定位置反向开始搜索,不存在返回-1

比较

|int compareTo(String anString)|按字典顺序比较两个字符串,相同返回,小于返回-1,大于返回1| |boolean contais(CharSequence sequence)|检查字符串是否包含指定的字符序列| |boolean startWith(String prefix)|判断字符串是否以指定前缀开始| |boolean endWith(String suffix)|判断字符串是否以指定后缀结束| |boolean equlas(Object anObject)|比较两个字符串是否相等| |boolean equalsIgnoreCase(Object anObject)|比较两个字符串是否相等,忽略大小写|

操作

方法 描述
String subString(int start,[int end]) 返回指定索引开始的子字符串,或指定范围内的子字符串
String replace(String target,String replacement) 返回新字符串,出现target子串的位置替换为replacement子串
String trim() 返回新字符串,去除前后空格
String toLowerCase() 返回新字符串,所有字符转换为小写
String toUpperCase() 返回新字符串,所有字符转换为大写
String[] split(String regex) 使用正则表达式将字符串分解为子串,返回一个字符串数组
String concat(String str) 返回新字符串,原字符串与指定字符串进行拼接,会复用字符串常量池,而+=拼接每次都会创建新的字符串对象
String intern() 将字符串添加到字符串常量池中并返回
byte[] getBytes() 将字符串拆分为字节数组
char[] toCharArray() 将字符串拆分为字符数组

静态方法

方法 描述
static String format(String str,...place) 通过占位符格式化字符串,%d数值类型,%s字符串
static String valueOf() 将基本数据类型或对象转换为字符串,对象转换的字符串为对象toString()输出的值,如果对象为null,返回字符串"null"
static String join(CharSequence delimiter,CharSequence... elements) 通过分隔符拼接字符或字符串,也可以传入字符串数组或者是字符串集合

字符串常量池

  • 为了提高性能,JVM设置了字符串常量池(Spring pool)
  • 创建Spring对象时,JVM会检查常量池是否存在该Spring对象,如果存在则返回已有对象,如果不存在则创建一个新的Spring对象并放入字符串常量池

StringBuffer与StringBuilder

特点

  • 可变字符串,不需要像String对象每次修改都要重新创建一个新的对象
  • 位于java.lang
  • 底层使用字符数组(char[])实现

比较

.StringBuffer StringBuilder
性能
线程安全 安全 不安全
场景 多线程,要保证线程安全的场合 单线程,性能要求较高的场合

方法

方法 描述
StringBuiler append(String str) 将指定的字符串拼接到StringBuiler对象的末尾
StringBuilder insert(int offset,String str) 在指定位置插入字符串
StringBuilder delete(int start,int end) 删除[start,end)区间的字符
String toString() StringBuilder转换为String对象
int capacity() 返回当前StringBuilder的容量
void setLength(int newLength) 设置StringBuilder的新长度,如果新长度小于当前长度,会截断字符串,如果新长度大于当前长度,会使用\0填充
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇