CodeGym /Java 博客 /随机的 /Java 字符串
John Squirrels
第 41 级
San Francisco

Java 字符串

已在 随机的 群组中发布

Java中的字符串是什么?

在编程中,字符串是非常常用的。java中的字符串是一个对象,表示由字符数组支持的字符序列。String类在 Java 中是不可变的,并实现ComparableSerializingCharSequence接口。让我们看一个例子来理解。
String str = "string"
这里str是6个字符的序列,分别是s、t、r、i、n和g。
字符数组索引 0 1 2 3 4 5
价值 s t r n G
内存地址 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
我们现在知道数组是不可变的,这意味着它在初始化后不能更改,因此字符串也是不可变的。

字符串初始化的方式

初始化字符串有两种方法。
  1. 字符串文字
  2. 新干员

字符串字面量

上面的示例使用了声明字符串的最简单、最直接的方法。每当编译器解释字符串文字时,它总是会转换为 String 对象。
String str = "string";

新干员

我们还可以使用 new 运算符来初始化字符串。
String strNew = new String("using new operator");

例子

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

输出

String str = 字符串文字 String strNew = 使用 new 运算符

String、StringBuilder、StringBuffer

我们已经讨论了什么是 String 类,因此我们将讨论其他两个类及其用途,以及 Java 在已经为我们提供 String 类的情况下引入这两个类的原因。您最好到顶部对 String 类进行修订,以便更好地理解它。

原因

我们知道 String 类对象是不可变的,因此每当我们需要更改字符串时,它都不会改变当前对象,但更改后的值始终存储为新的 String 对象。因此,如果我们需要一次又一次地更改该值,内存也会被消耗。保持这一点Java为我们提供了StringBuilderStringBuffer类。现在我们将看看它们在这种情况下有何用处。

字符串缓冲区

String 是不可变字符序列的表示,而StringBuffer可变字符序列。它使用大多数String类方法以及它自己的一些方法来更改字符的内容和序列。它是线程安全的,因为它的方法是同步的,供多个线程使用,从而保持串行顺序。它实现SerializedAppendableCharSequence接口。

句法

StringBuffer str = new StringBuffer("Happy Java Programming");

字符串生成器

StringBuilder 还表示可变的字符序列。它提供了一个API,该API与StringBuffer类兼容,但它不是线程安全的。因此,在不涉及多个线程的情况下,最好使用StringBuilder类,因为在许多情况下它比StringBuffer类更快。这个类的关键方法是insert和append。它还实现SerializedAppendableCharSequence接口。

句法

StringBuilder str = new StringBuilder("Happy Java Programming");

字符串操作

在Java中,我们可以执行字符串操作,连接比较拆分查找长度替换字符串等。

字符串方法

Java String 类提供了各种用于操作字符串或执行上述操作的方法。让我们看看下表中的一些字符串方法。
方法 描述
Char charAt(int 索引) 它返回提供的索引处的 char 值。
字符串连接(字符串 str) 它通过将指定的字符串组合到该字符串的末尾来返回一个字符串。
布尔值包含(CharSequence s) 如果字符串包含指定的 char 值序列,则返回 true。
布尔 contentEquals(CharSequence cs) 它将字符串与提供的字符序列进行匹配。
布尔 contentEquals(StringBuffer sb) 它将字符串与提供的字符串缓冲区进行匹配。
布尔结束(字符串后缀) 它将字符串结尾与提供的后缀进行比较。
布尔等于(对象 anObject) 它将字符串与提供的对象进行匹配。
布尔值 equalsIgnoreCase(String anotherString) 此方法比较两个字符串而不考虑区分大小写。
静态字符串格式(字符串格式,对象...args) 它使用提供的格式和参数返回格式化的字符串。
字节 getBytes() 此方法使用平台的默认字符集将字符串编码为字节序列,然后将其存储到新的字节数组中。
void getChars(int begin, int end, char[] dst, int dstBegin) 它将字符串中的字符复制到目标字符数组中。
int 哈希码() 它返回字符串的哈希码。
int indexOf(int ch) 它返回字符串中首先出现的指定字符的索引。
int indexOf(int ch, int fromIndex) 它返回从该字符串中提供的索引开始首先出现的指定字符的索引。
int indexOf(字符串 str) 它在字符串中搜索提供的子字符串并返回第一次出现的索引。
int indexOf(字符串 str, int fromIndex) 它开始从给定索引开始在字符串中搜索提供的子字符串,并返回第一次出现的索引。
字符串实习生() 此方法返回字符串的规范表示形式。
int lastIndexOf(int ch) 此方法在字符串中搜索提供的字符并返回最后一次出现的索引。
int lastIndexOf(int ch, int fromIndex) 此方法从给定索引向后搜索字符串中提供的字符,并返回最后一次出现的索引。
int lastIndexOf(字符串 str) 此方法在字符串中搜索提供的子字符串并返回最后一次出现的索引。
int lastIndexOf(字符串 str, int fromIndex) 此方法从给定索引向后搜索字符串中提供的子字符串,并返回最后一次出现的索引。
整数长度() 该方法返回字符串的长度。
布尔匹配(字符串正则表达式) 它通过将字符串与提供的正则表达式进行匹配来返回 true 或 false。
字符串替换(char oldValue,char newValue) 该方法在将字符串中所有提供的 oldValue 替换为 newValue 后返回一个字符串。
字符串[]分割(字符串正则表达式) 此方法根据字符串中提供的正则表达式查找所有匹配项,并将其拆分为这些匹配项。
布尔开始于(字符串前缀) 它通过测试以提供的前缀开头的字符串来返回 true 或 false。
字符串子串(int beginIndex) 此方法返回一个字符串,该字符串是该字符串的子字符串。
字符串 toLowerCase() 它使用默认区域设置的规则将字符串的所有字符转换为小写。
字符串修剪() 此方法从字符串中删除所有前导和尾随空格并返回它。
静态字符串 valueOf(char c) 它返回 char 参数的字符串表示形式。
现在借助一些示例,我们将了解如何使用它们。

例子

import java.io.*;
import java.lang.*;

class JavaStringsExample {
  public static void main(String[] args) {

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

输出

弦:您好!世界长度:12 第一个字符串:Java 第二个字符串:编程 连接字符串:Java 编程字符串 jpf 和 jps 相等:true 字符串 jpf 和 jpt 相等:false 大写 jpf:JAVA PROGRAMMING 在 jpf 中用 v 替换 g:java provramminv

结论

我们希望现在您了解什么是 java 中的字符串、它的类以及如何实现它的不同方法。请随意练习,并在需要更多帮助时返回。快乐学习!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION