📅  最后修改于: 2020-09-24 11:16:25             🧑  作者: Mango
在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接口用于表示字符序列。String,StringBuffer和StringBuilder类实现它。这意味着,我们可以使用这三个类在Java中创建字符串。
Java字符串是不可变的,这意味着它不能更改。每当我们更改任何字符串,都会创建一个新实例。对于可变字符串,可以使用StringBuffer和StringBuilder类。
稍后我们将讨论不可变字符串。首先,让我们了解Java中的String是什么以及如何创建String对象。
通常,字符串是字符序列。但是在Java中,字符串是一个代表字符序列的对象。java.lang.String类用于创建字符串对象。
有两种创建String对象的方法:
Java字符串文字是使用双引号创建的。例如:
"String s="welcome";
每次创建字符串文字时,JVM都会首先检查“字符串常量池”。如果该字符串已经存在于池中,则返回对该池实例的引用。如果该字符串在池中不存在,则会创建一个新的字符串实例并将其放置在池中。例如:
"String s1="Welcome";
String s2="Welcome";//It doesn't create a new instance
在上面的示例中,将仅创建一个对象。首先,JVM在字符串常量池中找不到任何值为“Welcome”的字符串对象,这就是为什么它将创建一个新的对象。之后,它将在池中找到值为“Welcome”的字符串,它将不会创建新对象,但会返回对同一实例的引用。
注意:字符串对象存储在称为“字符串常量池”的特殊存储区中。
为了提高Java的内存使用效率(因为如果字符串常量池中已经存在新对象,则不会创建新对象)。
"String s=new String("Welcome");//creates two objects and one reference variable
在这种情况下,JVM将在普通(非池)堆内存中创建一个新的字符串对象,而文字“Welcome”将放置在字符串常量池中。变量s将引用堆(非池)中的对象。
"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.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 extends CharSequence> 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. |