JavaSE字符串

本文详细介绍了Java中的字符串操作,包括String对象的不可变性、内存中的常量池以及各种常见操作如length()、charAt()、indexOf()等。此外,还探讨了字符串缓冲区StringBuffer和StringBuilder,它们的使用场景以及线程安全性。通过对这些内容的理解,开发者能更高效地处理字符串和提高代码性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String

· 字符串是一种特殊的对象
内存中有个常量池,常量池中存放字符a,b,c…
· 字符串是常量,一旦初始化就不可能被改变
· 字符串定义:
String str1=“sd”
String str2 = new String(“sda”)
区别:str1在内存中有一个对象;str2在内存中有两个对象
在这里插入图片描述
· String类指定是final的,没有子类
· s1和s2的区别:
String s1 =“asd”;
String s2 = new String(“asd”);
String s3 = “asd”;
s1== s2 false; 比较的是内存地址
s1.equals(s2) true ; 比较的是值
s1==s3 true "asd“定义完 放到常量池中

常见操作-获取

· int length() 获取字符串长度
获取字符串的长度是通过length()方法完成的。数组也有获取长度的方法,但是是数组的属性list.length;
· char charAt(int index) 获取指定位置上的字符;超出字符串长度会抛出StringIndexOutOfBoundsException;
· int indexOf(int char ) 获取指定字符在字符串中的第一次出现的位置;没有则返回-1
· int indexOf(int char, int fromIndex ) 从指定位置开始获取指定字符在字符串中的第一次出现的位置;
· int indexOf(String str ) 获取指定字符串在字符串中的第一次出现的位置;
· int indexOf(String str, int fromIndex ) 从指定位置开始获取指定字符串在字符串中的第一次出现的位置;
· int lastIndexOf(int char) 返回指定字符在字符串中最后一次出现的位置;
· String subString(beginIndex) 获取字符串中的一部分
String subString(beginIndex, endIndex) 包含头不包含尾;如果角标不存在会抛出StringIndexOutOfBoundsException;

常见操作-判断

· boolean contains(CharSequence F) 是否包含某个字符
在这里插入图片描述
· boolean isEmpty() 是否有内容,当且仅当length为0时返回true;
null时会报空指针异常,常用StringUtils.isBlank()判断是否有内容
· boolean startsWith(String str) 是否以指定的内容开头
· boolean endsWith(String str) 是否以指定的内容结尾
· boolean equals(String str) 判断字符串内容是否相同
· boolean equalsIgnoreCase(String str) 判断字符串内容是否相同 并忽视大小写

常见操作-转换

· 构造方法 String(char[] value) 将字符数组转成字符串
静态方法 static String copyValueOf(char[] value);
静态方法 static String valueOf(char[] value);
· char[] toCharArray() 将字符串转成字符数组

· 构造方法 String(byte[] value) 将字节数组转成字符串
静态方法 static String copyValueOf(byte[] value);
静态方法 static String valueOf(byte[] value);

· byte[] getBytes() 将字符串转成字节数组
· static String valueOf(int) 将基本数据类型转成字符串
static String valueOf(double)
static String valueOf(boolean)
字符串和字节数组在转换过程中可以指定编码表
· static String toUpperCase() 转成大写
· static String toLowerCase() 转成小写

常见操作-替换

替换会生成新的字符串
String replace(char oldChar, char newChar)
String replace(CharSequence oldStr, CharSequence newStr)
String replaceAll(String regex, String replaceStr)
String replaceFist(String regex, String replaceStr)

常见操作-切割

String[] split(String regex);

常见操作-比较

int compareTo(Str);
在这里插入图片描述

常见操作-去除空格

String trim()

StringBuffer

· 字符串缓存区,是一个容器
· 字符串的组成原理就是通过该类实现的
· 可以对字符串内容进行增删
· 是可变长度的,可添加多种数据类型
数组也是容器,但是长度不可变,且只能添加一种数据类型

StringBuffer-添加

· append() 存储,将添加参数存储到已有参数的结尾处
在这里插入图片描述
在这里插入图片描述
insert()在指定位置插入
在这里插入图片描述
· 通过toString() 转换为字符串类型

StringBuffer-删除

在这里插入图片描述
delete(start, end)包含头不包含尾
清空缓存区-delete(0, .length());

StringBuffer-获取

· char charAt(int index) 获取指定位置上的字符;超出字符串长度会抛出StringIndexOutOfBoundsException;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

· void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin); 将缓存区中指定数据存储到指定的字符数组中。包含头不包含尾

StringBuffer-修改

在这里插入图片描述
· void setCharAt(int index, String str) 把index位置上的值替换成str
· StringBuffer reverse() 反转

StringBuilder

在这里插入图片描述

StringBuffer 和 StringBuilder 的区别

StringBuffer 和 StringBuilder 的 3 个区别
StringBuffer是线程安全的可变字符串序列,StringBuilder线程不同步
单线程建议用StringBuilder,多线程用StringBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值