在Java中, 字符串基本上是一个表示char值序列的对象。字符数组与Java字符串相同。例如:
char[] ch={'j', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'};
String s=new String(ch);
与:
String s="srcmini";
Java String类提供了许多对字符串执行操作的方法, 例如compare(), concat(), equals(), split(), length(), replace(), compareTo(), intern(), substring()等等
【Java字符串介绍】java.lang.String类实现Serializable, Comparable和CharSequence接口。
文章图片
CharSequence接口 CharSequence接口用于表示字符序列。 String, StringBuffer和StringBuilder类实现它。这意味着, 我们可以使用这三个类在Java中创建字符串。
文章图片
Java字符串是不可变的, 这意味着它不能更改。每当我们更改任何字符串时, 都会创建一个新实例。对于可变字符串, 可以使用StringBuffer和StringBuilder类。
稍后我们将讨论不可变字符串。让我们首先了解什么是Java中的String以及如何创建String对象。
Java中的字符串是什么
通常, 字符串是字符序列。但是在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文字的概念?
使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
strings
example
Java String类方法
java.lang.String类提供了许多有用的方法来对char值序列执行操作。
没有。 | 方法 | 描述 |
---|---|---|
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 | 静态字符串连接(CharSequence分隔符, Iterable < ?扩展了CharSequence> 元素) | 返回一个连接的字符串。 |
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) | 从给定索引开始返回指定的char值索引。 |
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) | 将给定类型转换为字符串。这是一种重载方法。 |
我们将在字符串处理中学到什么?
推荐阅读
- Java字符串连接
- Java字符串compareTo()
- Java字符串charAt()
- Java中的不可变字符串
- Java Shell工具(JShell)
- 如何创建不可变类()
- StringBuffer和StringBuilder之间的区别
- String和StringBuffer之间的区别
- Java可变参数(变量)