java String StringBuilder StringBuffer创建、常用方法举例(简单向)

java String StringBuilder StringBuffer创建、常用方法举例(简单向)

0.创建方法

String

String s1 = "docn.net"; // String 直接创建
String s2 = s1; // 相同引用
String s3 = new String("docn.net"); // String 对象创建
char[] ch = { 'd', 'o', 'c', 'n', '.', 'n','e','t'};//字符数组
String str = new String(ch);//通过字符数组创建 

直接创建和对象创建的区别:

直接创建的String当遇到字符串常量时,即上述例子中的docn.net,他首先会在公共池中查找是否存在上述字符串,如果存在则直接指向,如果不存在则先在公共池中添加字符串在指向。

new创建的则是在堆中。

图片[1]-java String StringBuilder StringBuffer创建、常用方法举例(简单向)

StringBuilder StringBuffer

StringBuilder sb = new StringBuilder(8);//builder创建
StringBuffer sb = new StringBuffer(8);//buffer创建

1.String常用方法

以下是一些常用的String类方法,以”docn.net”作为示例字符串:

  1. length(): 返回字符串的长度。
String str = "docn.net";
int length = str.length(); // length = 8
  1. charAt(int index): 返回指定索引处的字符。
String str = "docn.net";
char ch = str.charAt(2); // ch = 'c'
  1. substring(int beginIndex): 返回从指定索引开始到字符串末尾的子字符串。
String str = "docn.net";
String subStr = str.substring(4); // subStr = ".net"
  1. substring(int beginIndex, int endIndex): 返回从指定的开始索引到结束索引(不包括结束索引)的子字符串。
String str = "docn.net";
String subStr = str.substring(1, 4); // subStr = "ocn"
  1. indexOf(String str): 返回指定子字符串在原字符串中第一次出现的索引位置。
String str = "docn.net";
int index = str.indexOf("net"); // index = 5
  1. contains(CharSequence sequence): 检查字符串是否包含指定的字符序列。
String str = "docn.net";
boolean contains = str.contains("cn"); // contains = true
  1. startsWith(String prefix): 检查字符串是否以指定的前缀开头。
String str = "docn.net";
boolean startsWith = str.startsWith("doc"); // startsWith = true
  1. endsWith(String suffix): 检查字符串是否以指定的后缀结尾。
String str = "docn.net";
boolean endsWith = str.endsWith("net"); // endsWith = true
  1. toUpperCase(): 将字符串转换为大写形式。
String str = "docn.net";
String upperCase = str.toUpperCase(); // upperCase = "DOCN.NET"
  1. toLowerCase(): 将字符串转换为小写形式。
String str = "DOCN.NET";
String lowerCase = str.toLowerCase(); // lowerCase = "docn.net"

这些只是String类的一些常用方法,还有其他许多方法可用于字符串操作。可以根据需要查阅Java官方文档以获取更多详细信息。

2.StringBuilder/StringBuffer常用方法

  1. append(String str): 将指定的字符串追加到当前StringBuilder对象的末尾。
StringBuilder sb = new StringBuilder();
sb.append("docn");
sb.append(".net");
String result = sb.toString(); // result = "docn.net"
  1. insert(int offset, String str): 在指定的偏移量处将指定的字符串插入到当前StringBuilder对象中。
StringBuilder sb = new StringBuilder("doc.net");
sb.insert(3, "n");
String result = sb.toString(); // result = "docn.net"
  1. delete(int start, int end): 删除从指定开始索引到结束索引(不包括结束索引)的字符。
StringBuilder sb = new StringBuilder("docn.net");
sb.delete(4, 7);
String result = sb.toString(); // result = "docnt"
  1. replace(int start, int end, String str): 使用指定的字符串替换从开始索引到结束索引(不包括结束索引)的字符。
StringBuilder sb = new StringBuilder("docn.net");
sb.replace(2, 4, "sx");
String result = sb.toString(); // result = "dosx.net"
  1. reverse(): 反转当前StringBuilder对象中的字符顺序。
StringBuilder sb = new StringBuilder("docn.net");
sb.reverse();
String result = sb.toString(); // result = "ten.ncod"
  1. length(): 返回当前StringBuilder对象中字符的长度。
StringBuilder sb = new StringBuilder("docn.net");
int length = sb.length(); // length = 8
  1. toString(): 将当前StringBuilder对象转换为String对象。
StringBuilder sb = new StringBuilder("docn.net");
String result = sb.toString(); // result = "docn.net"

StringBuffer常用方法与StringBuilder类似。

3.java String StringBuilder StringBuffer区别

  1. 不可变性:
  • String是不可变的,一旦创建,它的值就不能被修改。任何对String的修改操作都会创建一个新的String对象。
  • StringBuilder和StringBuffer是可变的,可以进行修改和操作,而不会创建新的对象。它们允许在现有对象的基础上进行添加、删除、替换等操作。
  1. 线程安全性:
  • String是线程安全的,因为它是不可变的,多个线程可以同时访问和共享String对象。
  • StringBuilder是非线程安全的,适用于单线程环境。如果在多线程环境下使用StringBuilder,需要进行额外的同步处理。
  • StringBuffer是线程安全的,适用于多线程环境。它的方法都是同步的,保证了线程安全性,但也导致了一定的性能损失。
  1. 性能:
  • String在进行频繁的字符串连接或修改时,由于不可变性会导致大量的对象创建和内存开销,性能较差。
  • StringBuilder在单线程环境下性能最好,因为它不需要进行额外的同步操作。
  • StringBuffer在多线程环境下提供了线程安全性,但由于同步操作的开销,性能相对较差。

一般来说:

  • 如果字符串不需要修改,或者只是进行少量的修改操作,使用String是合适的选择。
  • 如果字符串需要频繁的修改操作,并且在单线程环境下使用,使用StringBuilder可以提高性能。
  • 如果字符串需要频繁的修改操作,并且在多线程环境下使用,使用StringBuffer来保证线程安全。
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 共1条

请登录后发表评论