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 接口。

1.png

字符序列接口

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

2.png

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

Java 中的字符串是什么?

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

如何创建字符串对象?

创建 String 对象有两种方式:

  1. 通过字符串文字
  2. 按新关键字

1) 字符串字面量

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

String s="welcome";  

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

String s1="Welcome";  
String s2="Welcome";//它不创建一个新的实例   

3.png

在上面的例子中,只会创建一个对象。首先,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.方法描述
1char charAt(int index)它返回特定索引的 char 值
2int length()它返回字符串长度
3static String format(String format, Object... args)它返回一个格式化的字符串。
4static String format(Locale l, String format, Object... args)它返回具有给定语言环境的格式化字符串。
5String substring(int beginIndex)它返回给定开始索引的子字符串。
6String substring(int beginIndex, int endIndex)它返回给定开始索引和结束索引的子字符串。
7boolean contains(CharSequence s)匹配char值序列后返回true或false。
8static String join(CharSequence delimiter, CharSequence... elements)它返回一个连接的字符串。
9static String join(CharSequence delimiter, Iterable elements)它返回一个连接的字符串。
10boolean equals(Object another)它检查字符串与给定对象的相等性。
11boolean isEmpty()它检查字符串是否为空。
12String concat(String str)它连接指定的字符串。
13String replace(char old, char new)它替换所有出现的指定 char 值。
14String replace(CharSequence old, CharSequence new)它替换所有出现的指定 CharSequence。
15static String equalsIgnoreCase(String another)它比较另一个字符串。它不检查大小写。
16[String] split(String regex)它返回匹配正则表达式的拆分字符串。
17[String] split(String regex, int limit)它返回匹配正则表达式和限制的拆分字符串。
18String intern()它返回一个驻留字符串。
19int indexOf(int ch)它返回指定的 char 值索引。
20int indexOf(int ch, int fromIndex)它返回以给定索引开头的指定字符值索引。
21int indexOf(String substring)它返回指定的子字符串索引。
22int indexOf(String substring, int fromIndex)它返回以给定索引开头的指定子字符串索引。
23String toLowerCase()它返回一个小写的字符串。
24String toLowerCase(Locale l)它使用指定的区域设置以小写形式返回字符串。
25String toUpperCase()它返回一个大写的字符串。
26String toUpperCase(Locale l)它使用指定的区域设置以大写形式返回字符串。
27String trim()它删除此字符串的开头和结尾空格。
28static String valueOf(int value)它将给定类型转换为字符串。这是一个重载方法。

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想