Java中的字符串类型——String

字符串类型

  • 不可变类型:一旦创建,值就不会改变
  • fianl修饰类不能继承,不能被重写,修饰char类型后,地址不可变,内容可变,没有具体方法修改内容,保证不可变性

常用方法

  • 长度: int length = str1.length(); // 获取字符串长度
  • 拼接:
    • String str4 = str1.concat(", World!"); // 使用 concat 方法
    • String str3 = str1 + ", World!"; // 使用 + 运算符
  • 子串: String subStr = str1.substring(0, 5); // 获取子串 "Hello"
  • 查找:
    • int index = str1.indexOf('o'); // 查找字符 'o' 的位置
    • int lastIndex = str1.lastIndexOf('o'); // 查找字符 'o' 的最后一次出现的位置
  • 比较:
    • boolean isEqual = str1.equals(str2); // 比较两个字符串是否相等
    • int compareResult = str1.compareTo(str2); // 按字典顺序比较两个字符串
  • 大小写转换:
    • String upperStr = str1.toUpperCase(); // 转换为大写
    • String lowerStr = str1.toLowerCase(); // 转换为小写
  • 去除空格: String trimmedStr = str1.trim(); // 去除字符串两端的空格
  • 替换: String replacedStr = str1.replace('H', 'J'); // 将 'H' 替换为 'J'

字符串池

为了优化性能,Java 在内存中维护了一个字符串池。当使用字符串字面值创建字符串时,Java 会先检查池中是否存在相同的字符串,如果存在则返回池中的字符串对象,而不会创建新的对象。这使得相同的字符串字面值在内存中只有一个副本。

String str1 = "Hello"; 
String str2 = "Hello"; 
boolean isSame = (str1 == str2); // true,str1 和 str2 引用同一个字符串池中的对象

提升字符串拼接效率的类

  • StringBuffer:StringBuffer 是线程安全的可变字符串类。它的所有方法都是同步的(synchronized),这意味着在多线程环境中使用 StringBuffer 是安全的,但这也导致了其性能比StringBuilder 略低。
  • StringBuilder:StringBuilder 是非线程安全的可变字符串类。它的设计与 StringBuffer 类似,但不保证线程安全。因此,在单线程环境中,StringBuilder 比 StringBuffer 更快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值