Java String、StringBuffer 和 StringBuilder 的区别和理解(一)

简介: Java String、StringBuffer 和 StringBuilder 的区别和理解(一)

String


String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。


String声明为final的,不可被继承


String实现了Serializable接口:表示字符串是支持序列化的实现了Comparable接口:表示String可以比较大小


String在内部定义了final的char型数组(final char[]),用于存储字符串数据。


String代表一个不可变的字符序列。具有不变性。


/** The value is used for character storage. */
private final char value[];
/** The offset is the first index of the storage that is used. */
private final int offset;
/** The count is the number of characters in the String. */
private final int count;

初始化方式:常用的两种:

//通过字面量的方式定义
String s1 = "java";
//通过new + 构造器方式
String s2 = new String("java2");

会开辟两块堆内存空间,不会自动保存在常量池中,可以使用intern()方法手工入池。


String的常用用法详解

1.int length():返回字符串的长度

String s1 ="HelloWorld";
System.out.println(s1.length());//10

2.char chaeAt():返回索引处(index)的字符

String s1 ="HelloWorld";
System.out.println(s1.charAt(5));//W

 3.boolean isEmpty():判断是否是空字符串

String s1 ="HelloWorld";
System.out.println(s1.isEmpty());//false


4.String toLowerCase():使用默认语言环境,将String中的所有字符转换为小写

String s1 ="HelloWorld";
String s2 = s1.toLowerCase();
System.out.println(s2);//helloworld


5.String toUpperCase():使用默认语言环境,将String中的所有字符转换为大写(toLowerCase() 小写)

String str = "HELLO" ; 
System.out.println(str.toLowerCase());  //hello
String str = "hello" ; 
System.out.println(str.toUpperCase());  // HELLO


6.String trim():返回字符串的副本,忽略字符串前和字符串后的空白

String s3 = "     he   ll   o   w  or l d      ";
String s4 = s3.trim();
System.out.println("----------" + s4 + "-----------");
//"he   ll   o   w  or l d"

7.boolean equals():比较两个字符串的内容是否相同

String s6 = "abc";
 String s7 = "cde";
 System.out.println(s6.equals(s7));//false


8.String concat():将指定字符串连接到此字符串的结尾。

String s1 = "abc";
System.out.println(s1.concat("def"))//abcdef


9.int compareTo():比较两个字符串的大小

String s6 = "abc";
String s7 = "cde";
int i = s6.compareTo(s7);
System.out.println(i);//-2


10.String substring((int beginIndex):返回一个新的字符串,它是此字符串的从 beginIndex开始截取到最后的一个子字符串

String s8 = "你是如此美丽";
 String s9 = s8.substring(2);
 System.out.println(s9);//如此美丽


11.boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true

String str1 = "helloworld";
String str2 = "wo";
boolean b4 = str1.contains(str2);//true

12.int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引

String str1 = "helloworld";
System.out.println(str1.indexOf("lo"));//3
//若不存在,返回-1


13.int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引

String str1 = "helloworld";
System.out.println(str1.lastIndexOf("o"));//6


14.String replace(char oldChar, char newChar):返回一个新的字符串,它是 通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

15.boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。

16.String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。

相关文章
|
1月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
111 65
|
5天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
22天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
30天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第13天】Java零基础教学篇,手把手实践教学!
41 1
|
1月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
28 2
|
29天前
|
存储 安全 Java
String、StringBuffer 和 StringBuilder 的区别
【10月更文挑战第21天】String、StringBuffer 和 StringBuilder 都有各自的特点和适用场景。了解它们之间的区别,可以帮助我们在编程中更合理地选择和使用这些类,从而提高程序的性能和质量。还可以结合具体的代码示例和实际应用场景,进一步深入分析它们的性能差异和使用技巧,使对它们的理解更加全面和深入。
18 0
|
1月前
|
Java
Java代码解释静态代理和动态代理的区别
### 静态代理与动态代理简介 **静态代理**:代理类在编译时已确定,目标对象和代理对象都实现同一接口。代理类包含对目标对象的引用,并在调用方法时添加额外操作。 **动态代理**:利用Java反射机制在运行时生成代理类,更加灵活。通过`Proxy`类和`InvocationHandler`接口实现,无需提前知道接口的具体实现细节。 示例代码展示了两种代理方式的实现,静态代理需要手动创建代理对象,而动态代理通过反射机制自动创建。
|
1月前
|
缓存 算法 Java
Java 中线程和纤程Fiber的区别是什么?
【10月更文挑战第14天】
70 0
|
3月前
|
安全 Java API
Java系类 之 String、StringBuffer和StringBuilder类的区别
这篇文章讨论了Java中`String`、`StringBuffer`和`StringBuilder`三个类的区别,其中`String`是不可变的,而`StringBuffer`是线程安全的可变字符串类,`StringBuilder`是非线程安全的可变字符串类,通常在单线程环境下性能更优。
Java系类 之 String、StringBuffer和StringBuilder类的区别
下一篇
无影云桌面