String

String.intern() 方法有以下行为:

  1. 如果字符串常量池中已经存在该字符串,则返回字符串·常量池中的引用。
  2. 如果字符串常量池中不存在该字符串,则将该字符串添加到字符串常量池中,并返回字符串常量池中的引用。
     String a = "xy";
        String b = "xc";
        String c = "xyxc";
        String d = a+b;  //变量相加  看的是堆空间
        System.out.println(c==d);  //F
        String e = "xy"+"xc";  //常量相加  看的是池
        System.out.println(c==e);  //T

String、StringBuilder和StringBuffer是Java中用于处理字符串的类,它们在性能、线程安全性以及可变性方面有所不同。

String类:

  • 不可变性:String对象是不可变的,一旦创建就不能被修改。对String对象进行拼接、替换等操作时会创建新的String对象。
  • 线程安全:由于String的不可变性,它是线程安全的,多个线程可以同时访问同一个String对象。
  • 适用场景:适用于需要频繁读取字符串而很少修改的场景,比如字符串常量、数据库操作等。

StringBuilder类:

  • 可变性:StringBuilder是可变的,可以进行增删改操作,而且不会创建新的对象。
  • 非线程安全:StringBuilder不是线程安全的,不适合在多线程环境下使用。如果需要在多线程环境下使用可变字符串,应该使用StringBuffer。
  • 高效性:由于StringBuilder的可变性,它执行字符串操作的速度比String要快。
  • 适用场景:适用于单线程环境下需要频繁进行字符串拼接、插入和删除操作的场景。

StringBuffer类:

  • 可变性:StringBuffer也是可变的,可以进行增删改操作,与StringBuilder相似。
  • 线程安全:与StringBuilder不同的是,StringBuffer是线程安全的,适合在多线程环境下使用。
  • 性能相对较低:相对于StringBuilder,StringBuffer的性能稍低,因为它需要保证线程安全,所以在单线程环境下通常建议使用StringBuilder。
  • 适用场景:适用于多线程环境下需要频繁进行字符串拼接、插入和删除操作的场景。

总结:

  • 如果字符串是不变的,并且多线程环境下使用,应使用String。
  • 如果字符串是可变的,并且在单线程环境下使用,应优先使用StringBuilder。
  • 如果字符串是可变的,并且需要在多线程环境下使用,应使用StringBuffer。

Java中的String类提供了许多常用的方法来操作和处理字符串。以下是一些常见的String类方法:

  1. length():返回字符串的长度。
  2. charAt(int index):返回指定索引位置上的字符。
  3. substring(int beginIndex, int endIndex):返回一个新的字符串,包含原始字符串中指定索引范围内的字符。
  4. concat(String str):将指定的字符串连接到原始字符串的末尾。
  5. equals(Object obj):比较字符串与给定对象是否相等。
  6. compareTo(String anotherString):按字典顺序比较两个字符串。
  7. toLowerCase() / toUpperCase():将字符串转换为小写/大写形式。
  8. trim():去除字符串中的前导和尾部空格。
  9. indexOf(String str):返回指定字符串在原始字符串中第一次出现的位置索引。
  10. replace(char oldChar, char newChar):将字符串中所有出现的指定字符替换为新的字符。
  11. split(String regex):将字符串拆分成子字符串数组,使用给定的正则表达式。
  12. startsWith(String prefix) / endsWith(String suffix):检查字符串是否以指定的前缀/后缀开始或结束。
  13. contains(CharSequence sequence):检查字符串是否包含指定的字符序列。
  14. format(String format, Object... args):使用指定的格式字符串和参数创建一个新字符串。
  15. isEmpty():检查字符串是否为空。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值