Java String类

1 什么是Java String类

在Java中,String字符串是一个表示char值序列的对象。例如:

char[] ch={'y','i','i','d','i','a','n'};  
String s=new String(ch);  

String s="yiidian";  

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

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

2 CharSequence接口

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


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

3 如何创建String对象

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

  1. 直接使用String声明
  2. 通过new关键字

3.1 直接使用String声明

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

String s="welcome";

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

String s1="Welcome";  
String s2="Welcome";//这行代码不创建新的字符串对象


在上面的示例中,我们仅仅创建一个字符串对象。首先,JVM在字符串常量池中找不到任何内容为“ Welcome”的字符串对象,然后创建一个新的字符串对象。之后,我们将在常量池中找到值为“ Welcome”的字符串,就不会创建新字符串对象啦,而是直接返回对之前对象的引用。

3.2 通过new关键字

String s=new String("Welcome");//创建两个字符串对象和一个引用变量

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

4 Java String类的例子

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java String的例子
 */
public class Demo{

    public static void main(String args[]){
        String s1="java";//通过java字符串文字创建字符串
        char ch[]={'s','t','r','i','n','g','s'};
        String s2=new String(ch);//将char数组转换为字符串
        String s3=new String("example");//通过new关键字创建Java字符串
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

输出结果为:

java
strings
example

5 Java String类的方法

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

方法 描述
charAt() 返回特定索引的char值
compareTo() 将此String对象与另一个对象进行比较
concat() 将指定的字符串连接到此字符串的末尾。
contains() 用于判断字符串string分是否包含子字符串
endsWith() 判断此字符串是否以指定的字符作为后缀结尾。
equals() 将此字符串与指定的对象进行比较。
equalsIgnoreCase() 将此String与另一个String进行比较,忽略大小写。
format() 用于创建格式化的字符串以及连接多个字符串对象。
getBytes() 使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。
getChars() 将此字符串中的字符复制到目标字符数组中。
indexOf() 返回指定字符在此字符串中第一次出现的索引。
intern() 返回字符串对象的规范表示。
isEmpty() 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0
join() 在指定 String 数组B的每个元素之间串联指定的分隔符 A,从而产生单个串联的字符串
lastIndexOf() 返回指定字符在此字符串中最后一次出现的索引。
length() 返回此字符串的长度。
replace() 返回一个新字符串,该字符串是使用newChar替换此字符串中出现的所有oldChar后的字符串。
replaceAll() 将替换此字符串中匹配给定正则表达式的每个子字符串。
split() 将此字符串拆分为给定正则表达式的匹配项。
startsWith() 判断此字符串是否以指定的字符串前缀开头。
substring() 返回一个新字符串,该字符串是此字符串的子字符串。
toCharArray() 将此字符串转换为新的字符数组。
toLowerCase() 使用默认语言环境的规则将此String中的所有字符转换为小写。
toUpperCase() 使用默认语言环境的规则将此String中的所有字符转换为大写。
trim() 返回字符串的副本,移除前导和尾随空格。
valueOf() 返回传递的数据类型参数的字符串表示形式。

 

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码