Java教程-Java String 字符串

Java String 字符串
在Java中,字符串基本上是一个表示 char 值序列的对象。字符数组的工作原理与 Java 字符串相同。例如:
char[] ch={'j','a','v','a','t','p','o','i','n','t'};
String s=new String(ch);
与:
String s="javatpoint";
Java String类提供了很多对字符串进行操作的方法,如compare()、concat()、equals()、split()、length()、replace()、compareTo()、intern()、substring() ETC。
java.lang.String 类实现了Serializable、Comparable和CharSequence 接口。
字符序列接口
CharSequence 接口用于表示字符序列。String、StringBuffer和StringBuilder类实现它。这意味着,我们可以使用这三个类在 Java 中创建字符串。
Java String 是不可变的,这意味着它不能被改变。每当我们更改任何字符串时,都会创建一个新实例。对于可变字符串,您可以使用 StringBuffer 和 StringBuilder 类。
Java 中的字符串是什么?
通常,String 是一个字符序列。但是在 Java 中,string 是一个表示字符序列的对象。java.lang.String 类用于创建字符串对象。
如何创建字符串对象?
创建 String 对象有两种方式:
- 通过字符串文字
- 按新关键字
1) 字符串字面量
Java String 文字是使用双引号创建的。例如:
String s="welcome";
每次创建字符串文字时,JVM 首先检查“字符串常量池”。如果该字符串已存在于池中,则返回对池实例的引用。如果池中不存在该字符串,则会创建一个新的字符串实例并将其放入池中。例如:
String s1="Welcome";
String s2="Welcome";//它不创建一个新的实例
在上面的例子中,只会创建一个对象。首先,JVM 不会在字符串常量池中找到任何值为“Welcome”的字符串对象,这就是为什么它会创建一个新对象。之后它会在池中找到值为“Welcome”的字符串,它不会创建新对象但会返回对同一实例的引用。
注意:字符串对象存储在称为“字符串常量池”的特殊内存区域中。
为什么Java要用String字面量的概念?
使 Java 的内存效率更高(因为如果字符串常量池中已经存在,则不会创建新对象)。
2)通过新关键字
String s=new String("Welcome");//创建两个对象和一个引用变量
在这种情况下,JVM将在普通(非池)堆内存中创建一个新的字符串对象,并将文字“Welcome”放入字符串常量池中。变量 s 将引用堆(非池)中的对象。
Java 字符串示例
StringExample.java
public class StringExample{
public static void main(String args[]){
String s1="java";//通过Java字符串字面量创建字符串
char ch[]={'s','t','r','i','n','g','s'};
String s2=new String(ch);//将字符数组转换为字符串
String s3=new String("example");//c通过new关键字创建Java字符串
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}}
输出:
java
strings
example
上面的代码将char数组转换为String对象。并使用println()方法在控制台上显示字符串对象s1、s2和s3。
Java 字符串类方法
java.lang.String 类提供了许多有用的方法来对 char 值序列执行操作。
No. | 方法 | 描述 |
---|---|---|
1 | char charAt(int index) | 它返回特定索引的 char 值 |
2 | int length() | 它返回字符串长度 |
3 | static String format(String format, Object... args) | 它返回一个格式化的字符串。 |
4 | static String format(Locale l, String format, Object... args) | 它返回具有给定语言环境的格式化字符串。 |
5 | String substring(int beginIndex) | 它返回给定开始索引的子字符串。 |
6 | String substring(int beginIndex, int endIndex) | 它返回给定开始索引和结束索引的子字符串。 |
7 | boolean contains(CharSequence s) | 匹配char值序列后返回true或false。 |
8 | static String join(CharSequence delimiter, CharSequence... elements) | 它返回一个连接的字符串。 |
9 | static String join(CharSequence delimiter, Iterable elements) | 它返回一个连接的字符串。 |
10 | boolean equals(Object another) | 它检查字符串与给定对象的相等性。 |
11 | boolean isEmpty() | 它检查字符串是否为空。 |
12 | String concat(String str) | 它连接指定的字符串。 |
13 | String replace(char old, char new) | 它替换所有出现的指定 char 值。 |
14 | String replace(CharSequence old, CharSequence new) | 它替换所有出现的指定 CharSequence。 |
15 | static String equalsIgnoreCase(String another) | 它比较另一个字符串。它不检查大小写。 |
16 | [String] split(String regex) | 它返回匹配正则表达式的拆分字符串。 |
17 | [String] split(String regex, int limit) | 它返回匹配正则表达式和限制的拆分字符串。 |
18 | String intern() | 它返回一个驻留字符串。 |
19 | int indexOf(int ch) | 它返回指定的 char 值索引。 |
20 | int indexOf(int ch, int fromIndex) | 它返回以给定索引开头的指定字符值索引。 |
21 | int indexOf(String substring) | 它返回指定的子字符串索引。 |
22 | int indexOf(String substring, int fromIndex) | 它返回以给定索引开头的指定子字符串索引。 |
23 | String toLowerCase() | 它返回一个小写的字符串。 |
24 | String toLowerCase(Locale l) | 它使用指定的区域设置以小写形式返回字符串。 |
25 | String toUpperCase() | 它返回一个大写的字符串。 |
26 | String toUpperCase(Locale l) | 它使用指定的区域设置以大写形式返回字符串。 |
27 | String trim() | 它删除此字符串的开头和结尾空格。 |
28 | static String valueOf(int value) | 它将给定类型转换为字符串。这是一个重载方法。 |