📜  Java字符串

📅  最后修改于: 2020-09-24 11:16:25             🧑  作者: Mango

Java字符串

在Java中,字符串基本上是一个表示char值序列的对象。字符数组与Java字符串相同。例如:

"char[] ch={'j','a','v','a','t','p','o','i','n','t'};  
String s=new String(ch);  

与:

"String s="javatpoint";  

JavaString类提供了许多对字符串执行操作的方法,例如compare(),concat(),equals(),split(),length(),replace(),compareTo(),intern(),substring()等等

java.lang.String类实现Serializable,Comparable和CharSequence接口。

CharSequence接口

CharSequence接口用于表示字符序列。String,StringBuffer和StringBuilder类实现它。这意味着,我们可以使用这三个类在Java中创建字符串。

Java字符串是不可变的,这意味着它不能更改。每当我们更改任何字符串,都会创建一个新实例。对于可变字符串,可以使用StringBuffer和StringBuilder类。

稍后我们将讨论不可变字符串。首先,让我们了解Java中的String是什么以及如何创建String对象。

Java中的字符串是什么

通常,字符串是字符序列。但是在Java中,字符串是一个代表字符序列的对象。java.lang.String类用于创建字符串对象。

如何创建一个字符串对象?

有两种创建String对象的方法:

  • 按字符串文字
  • 通过新关键字

1)字符串文字

Java字符串文字是使用双引号创建的。例如:

"String s="welcome";  

每次创建字符串文字时,JVM都会首先检查“字符串常量池”。如果该字符串已经存在于池中,则返回对该池实例的引用。如果该字符串在池中不存在,则会创建一个新的字符串实例并将其放置在池中。例如:

"String s1="Welcome";  
String s2="Welcome";//It doesn't create a new instance  

在上面的示例中,将仅创建一个对象。首先,JVM在字符串常量池中找不到任何值为“Welcome”的字符串对象,这就是为什么它将创建一个新的对象。之后,它将在池中找到值为“Welcome”的字符串,它将不会创建新对象,但会返回对同一实例的引用。

注意:字符串对象存储在称为“字符串常量池”的特殊存储区中。

为什么Java使用String文字的概念?

为了提高Java的内存使用效率(因为如果字符串常量池中已经存在新对象,则不会创建新对象)。

2)通过新关键字

"String s=new String("Welcome");//creates two objects and one reference variable  

在这种情况下,JVM将在普通(非池)堆内存中创建一个新的字符串对象,而文字“Welcome”将放置在字符串常量池中。变量s将引用堆(非池)中的对象。

Java字符串示例

"public class StringExample{  
public static void main(String args[]){  
String s1="java";//creating string by java string literal  
char ch[]={'s','t','r','i','n','g','s'};  
String s2=new String(ch);//converting char array to string  
String s3=new String("example");//creating java string by new keyword  
System.out.println(s1);  
System.out.println(s2);  
System.out.println(s3);  
}}  

Java String类方法

java.lang.String类提供了许多有用的方法来对char值序列执行操作。

No. Method Description
1 char charAt(int index) returns char value for the particular index
2 int length() returns string length
3 static String format(String format, Object… args) returns a formatted string.
4 static String format(Locale l, String format, Object… args) returns formatted string with given locale.
5 String substring(int beginIndex) returns substring for given begin index.
6 String substring(int beginIndex, int endIndex) returns substring for given begin index and end index.
7 boolean contains(CharSequence s) returns true or false after matching the sequence of char value.
8 static String join(CharSequence delimiter, CharSequence… elements) returns a joined string.
9 static String join(CharSequence delimiter, Iterable elements) returns a joined string.
10 boolean equals(Object another) checks the equality of string with the given object.
11 boolean isEmpty() checks if string is empty.
12 String concat(String str) concatenates the specified string.
13 String replace(char old, char new) replaces all occurrences of the specified char value.
14 String replace(CharSequence old, CharSequence new) replaces all occurrences of the specified CharSequence.
15 static String equalsIgnoreCase(String another) compares another string. It doesn’t check case.
16 String[] split(String regex) returns a split string matching regex.
17 String[] split(String regex, int limit) returns a split string matching regex and limit.
18 String intern() returns an interned string.
19 int indexOf(int ch) returns the specified char value index.
20 int indexOf(int ch, int fromIndex) returns the specified char value index starting with given index.
21 int indexOf(String substring) returns the specified substring index.
22 int indexOf(String substring, int fromIndex) returns the specified substring index starting with given index.
23 String toLowerCase() returns a string in lowercase.
24 String toLowerCase(Locale l) returns a string in lowercase using specified locale.
25 String toUpperCase() returns a string in uppercase.
26 String toUpperCase(Locale l) returns a string in uppercase using specified locale.
27 String trim() removes beginning and ending spaces of this string.
28 static String valueOf(int value) converts given type into string. It is an overloaded method.