Java字符串介绍

在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接口。
Java字符串介绍

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

文章图片
Java字符串是不可变的, 这意味着它不能更改。每当我们更改任何字符串时, 都会创建一个新实例。对于可变字符串, 可以使用StringBuffer和StringBuilder类。
稍后我们将讨论不可变字符串。让我们首先了解什么是Java中的String以及如何创建String对象。
Java中的字符串是什么
通常, 字符串是字符序列。但是在Java中, 字符串是一个代表字符序列的对象。 java.lang.String类用于创建字符串对象。
如何创建一个字符串对象?
有两种创建String对象的方法:
  1. 按字符串文字
  2. 通过新关键字
1)字符串文字
Java字符串文字是使用双引号创建的。例如:
String s="welcome";

每次创建字符串文字时, JVM都会首先检查“字符串常量池”。如果该字符串已经存在于池中, 则返回对该池实例的引用。如果该字符串在池中不存在, 则会创建一个新的字符串实例并将其放置在池中。例如:
String s1="Welcome"; String s2="Welcome"; //It doesn't create a new instance

Java字符串介绍

文章图片
在上面的示例中, 将仅创建一个对象。首先, 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) 将给定类型转换为字符串。这是一种重载方法。
你知道吗?
我们将在字符串处理中学到什么?

    推荐阅读