常用类库:String
发布日期:2021-06-27 12:55:53
浏览次数:51
分类:技术文章
本文共 1873 字,大约阅读时间需要 6 分钟。
文章目录
概述
String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。
字符串是不变的; 它们的值在创建后无法更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,所以可以共享它们。
由于String对象不变,当内容一样时,允许共享地址存储。当需要堆字符串做很多修改,那么应该使用StringBuffer & StringBuilder类
package Demo1;public class Demo5 { public static void main(String[] args) { String test1 = "123123"; String test2 = "123123"; System.out.println(test1 == test2); }}
运行结果:
创建字符串
String str = "hello";
在代码中遇到字符串常量时,这里的值是 “hello”",编译器会使用该值创建一个 String 对象
此外,也可以用关键字和构造方法来创建String对象
String str = new String("hello");
String创建的字符串存储在公共池中,而new创建的字符串对象在堆上
String 方法
方法 | 方法描述 |
---|---|
char charAt(int index) | 返回指定索引处的 char 值 |
int compareTo(Object o) | 把这个字符串和另一个对象比较 |
int compareTo(String anotherString) | 按字典顺序比较两个字符串 |
int compareToIgnoreCase(String str) | 按字典顺序比较两个字符串,不考虑大小写 |
String concat(String str) | 将指定字符串连接到此字符串的结尾 |
boolean contentEquals(StringBuffer sb) | 当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真 |
static String copyValueOf(char[] data) | 返回指定数组中表示该字符序列的 String |
boolean equals(Object anObject) | 将此字符串与指定的对象比较 |
int hashCode() | 返回此字符串的哈希码 |
int indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引 |
int length() | 返回此字符串的长度 |
String replace(char oldChar, char newChar) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
String substring(int beginIndex) | 返回一个新的字符串,它是此字符串的一个子字符串 |
String 和StringBuilder、StringBuffer 的区别?
- 可变性 a. String类中使用final关键字修饰字符数组来保存字符串,因此String对象是不可变的 b. 而StringBuilder与StringBuffer继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,但是没有用final关键字修饰,因此这两种对象都是可变的
- 线程安全性 a. String中的对象是不可变的,也就可以理解为常量,线程安全。 b. StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以也是线程安全的, c. StringBuilder并没有对方法加同步锁,因此非线程安全。
- 性能 a. 每次对String类型进行改变的时候,都会生成一个String对象,然后将指针指向新的String对象, b. StringBuffer灭磁都会对StringBuffer对象本身进行操作,而不是生成新的对象并改变对象引用。 c. 在相同情况夏使用StringBuilder相比使用StringBuffer仅仅能获得10%~15%左右性能提示,但是却要冒多线程不安全的风险
总结:
- 操作少量数据,适用String
- 单线程操作字符串缓冲区下操作大量数据,适用StringBuilder
- 多线程操作字符串缓冲区下操作大量数据,适用 StringBuffer
转载地址:https://blog.csdn.net/weixin_43454088/article/details/116278073 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月08日 00时07分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AcWing - 扩展欧几里得算法(扩欧)
2019-04-28
AcWing - 高斯消元解线性方程组(高斯消元)
2019-04-28
AcWing - 求组合数 I(递推)
2019-04-28
AcWing - 求组合数 II(预处理&逆元)
2019-04-28
AcWing - 求组合数 III(lucas&逆元)
2019-04-28
AcWing - 求组合数 IV(分解质因数)
2019-04-28
AcWing - 满足条件的01序列(组合数学&卡特兰数)
2019-04-28
AcWing - 快速排序(快排)
2019-04-28
AcWing - 归并排序(归排)
2019-04-28
AcWing - 数的范围(二分)
2019-04-28
AcWing - 数的三次方根(二分)
2019-04-28
AcWing - 高精度加法(大数加法)
2019-04-28
AcWing - 高精度减法(大数减法)
2019-04-28
AcWing - 高精度乘法(大数乘法)
2019-04-28
AcWing - 高精度除法(大数除法)
2019-04-28
AcWing - 前缀和(前缀和)
2019-04-28
AcWing - 子矩阵的和(二维前缀和)
2019-04-28
AcWing - 差分(一维差分)
2019-04-28
AcWing - 最长连续不重复子序列(双指针)
2019-04-28
AcWing - 数组元素的目标和(双指针)
2019-04-28