Java 字符串

字符串在字面意义上就是一系列字符。字符串不是 Java 中的原始数据类型。是的,所以在技术方面,Java 字符串基本上是一个字符数组。

为什么要使用字符串?

现代计算机科学的主要功能之一是处理人类语言。与数字对数学的重要性类似,语言符号对于意义和决策也很重要。

作为 Java 程序员,你存储和处理语言的主要工具之一将是 String 类。

String 语法示例

现在,让我们来看一些字符串语法。

String 是一个字符数组,表示为:

//String is an array of characters
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample_1 = new String (arrSample);

在技​​术方面,字符串在上面的例子中定义如下 -

= new (argument);

现在我们不能总是把我们的字符串写成数组,因此我们可以在 Java 中定义 String,如下所示:

//Representation of String
String strSample_2 = "ROSE";

在技​​术方面,以上表示为:

= ;

Java 用 String Class 扩展了对象类。

字符串连接

我们有两个字符串 str1 =Rock 和 str2 =Star,如果我们将这两个字符串相加,我们应该得到 str3 =RockStar 的结果。

看一下下面的代码片段,它解释了执行字符串连接的两种方法。

首先使用 String 类的 concat 方法,然后使用算术 + 运算符。两者都产生相同的输出

public class Sample_String{
    public static void main(String[] args){
        //String Concatenation
        String str1 = "Rock";
        String str2 = "Star";
        //Method 1 : Using concat
        String str3 = str1.concat(str2);
        System.out.println(str3);
        //Method 2 : Using "+" operator
        String str4 = str1 + str2;
        System.out.println(str4);
    }
}

重要的 Java 字符串方法:

字符串 length 方法

你如何确定给定 String 的长度?Java 提供了一种称为 length 的方法。将它用于你需要查找长度的 String。

public class Sample_String{
    public static void main(String[] args){  
        //Our sample string for this tutorial
        String str_Sample = "RockStar";
        //Length of a String
        System.out.println("Length of String: " + str_Sample.length());
    }
}

输出

Length of String: 8

字符串 indexOf 方法

如果我知道长度,我怎么能找到哪个字符在哪个位置?简而言之,我如何找到字符的索引?

字符串中有一个 indexOf 方法可以帮助你确定你指定的特定字符的位置。

public class Sample_String{
  public static void main(String[] args){
      //Character at position
      String str_Sample = "RockStar";
      System.out.println("Character at position 5: " + str_Sample.charAt(5));
      //Index of a given character
      System.out.println("Index of character 'S': " + str_Sample.indexOf('S'));
  }
}

输出:

Character at position 5: t
Index of character 'S': 4

字符串 charAt 方法

与上述问题类似,给定索引,我如何知道该位置的字符?

简单,来使用 charAt 方法并提供你需要查找其字符的索引。

public class Sample_String{
    public static void main(String[] args){
        //Character at position
        String str_Sample = "RockStar";
        System.out.println("Character at position 5: " + str_Sample.charAt(5));
    }
}

输出:

Character at position 5: t

字符串 CompareTo 方法

我想检查由某种方法生成的字符串是否等于我要验证的字符串?我如何比较两个字符串?

使用方法 compareTo 并指定要比较的字符串。如果你不希望结果区分大小写,请使用 compareToIgnoreCase

如果参考字符串等于此字符串,则结果为 0;如果此字符串按字典顺序小于参考字符串,则小于 0,如果此字符串按字典顺序大于参考字符串,则值大于 0

public class Sample_String{
    public static void main(String[] args){
        //Compare to a String
        String str_Sample = "RockStar";
        System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
        //Compare to - Ignore case
        System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
    }
}

输出:

Compare To 'ROCKSTAR': -32
Compare To 'ROCKSTAR' - Case Ignored: 0

字符串 contains 方法

我知道字符串应该部分包含什么,如何确认字符串是否包含我指定的字符序列?

使用方法 contains 并指定你需要检查的字符。当且仅当此字符串包含指定的 char 值序列时,才返回 true

public class Sample_String{
    public static void main(String[] args){  
        //Check if String contains a sequence
        String str_Sample = "RockStar";
        System.out.println("Contains sequence 'tar': " + str_Sample.contains("tar"));
    }
}

输出:

Contains sequence 'tar': true

字符串 endsWith 方法

如何确认 String 是否以特定后缀结尾? 来使用 endsWith 方法并在参数中指定后缀。

如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true

public class Sample_String{
    public static void main(String[] args){  
        //Check if ends with a particular sequence
        String str_Sample = "RockStar";
        System.out.println("EndsWith character 'r': " + str_Sample.endsWith("r"));
    }
}

输出:

EndsWith character 'r': true

字符串 replaceAllreplaceFirst 方法

我想在几个地方修改我的 String 并在几个地方替换 String,如何来做呢?

用 Java 字符串替换的 replaceAllreplaceFirst 方法。你可以指定要替换的字符串部分以及参数中的替换字符串。

public class Sample_String{
    public static void main(String[] args){
        //Replace Rock with the word Duke
        String str_Sample = "RockStar";
        System.out.println("Replace 'Rock' with 'Duke': " + str_Sample.replace("Rock", "Duke"));
    }
}

输出:

Replace 'Rock' with 'Duke': DukeStar

字符串 tolowercasetouppercase 方法

我希望我的整个 String 以小写或大写显示?

只需对需要转换的字符串使用 toLowercase()ToUpperCase() 方法。

public class Sample_String{
    public static void main(String[] args){      
        String str_Sample = "RockStar";
        //Convert to LowerCase
        System.out.println("Convert to LowerCase: " + str_Sample.toLowerCase());
        //Convert to UpperCase
        System.out.println("Convert to UpperCase: " + str_Sample.toUpperCase());
    }
}

输出:

Convert to LowerCase: rockstar
Convert to UpperCase: ROCKSTAR

要点注意事项:

  • 字符串是 final class,即一旦创建,其值就无法改变。因此,String 对象称为不可变对象。

  • Java 虚拟机(JVM)创建一个内存位置,特别是对于名为 String Constant Pool 的字符串。这就是为什么 String 可以在没有 new 关键字的情况下初始化的原因。

  • String 类属于 java.lang.String 层次结构。但是没有必要导入这个类。Java 平台会自动提供它们。

  • 可以覆盖字符串引用,但不会删除其内容,即

  String h1 = "hello";
  
  h1 = "hello"+"world";

hello 字符串不会被删除,它只是失去了它的引用。

  • 多个引用可以用于相同的字符串,但它将出现在同一个地方,即

     String h1 = "hello";
     String h2 = "hello";
     String h3 = "hello";
    

内存中,只创建了一个 hello 字符串,它有三个参考, h1h2h3

  • 如果在 "" 中引用数字,那么它将变为字符串,而不再是数字。这意味着,

     String S1 ="The number is: "+ "123"+"456";
         
     System.out.println(S1);
    

那它就会打印

 ```java
 The number is: 123456
 ```

假如,

 ``` java
 String S1 = "The number is: "+(123+456);

 System.out.println(S1);
 ```

那它将打印

 ``` java
 The number is:579
 ```

 `579` 是字符串类型,而不是整型了。