📜  Java字符串String

📅  最后修改于: 2020-09-26 16:03:18             🧑  作者: Mango

在本教程中,我们将在示例的帮助下了解Java String,如何创建它及其各种方法。

 

在Java中, 字符串是字符序列。例如, “ hello”是一个包含字符 ‘h’‘e’‘l’‘l’‘o’的序列的字符串 。

与其他编程语言不同,Java中的字符串不是原始类型(例如intchar等)。相反,所有字符串都是名为String的预定义类的对象。例如,

// create a string
String type = "java programming";

在这里,我们创建了一个名为type的字符串 。在这里,我们使用“ java programming”初始化了字符串 。在Java中,我们使用双引号表示一个字符串。

该字符串是String类的一个实例。

注意 :所有字符串变量都是String类的实例。


Java字符串方法

Java String提供了各种方法,使我们可以执行不同的字符串操作。以下是一些常用的字符串方法。

Methods Description
concat() joins the two strings together
equals() compares the value of two strings
charAt() returns the character present in the specified location
getBytes() converts the string to an array of bytes
indexOf() returns the position of the specified character in the string
length() returns the size of the specified string
replace() replaces the specified old character with the specified new character
substring() returns the substring of the string
split() breaks the string into an array of strings
toLowerCase() converts the string to lowercase
toUpperCase() converts the string to uppercase
valueOf() returns the string representation of the specified data

让我们举几个例子。


示例1:Java查找字符串的长度

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

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

    //checks the string length
    System.out.println("The length of the string: " + greet.length());
  }
}

输出

The string is: Hello! World
The length of the string: 12

在上面的示例中,我们创建了一个名为greet的字符串 。在这里,我们使用length()方法来获取字符串的大小。


示例2:Java使用concat()连接两个字符串

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

    // create string
    String greet = "Hello! ";
    System.out.println("First String: " + greet);

    String name = "World";
    System.out.println("Second String: " + name);

    // join two strings
    String joinedString = greet.concat(name);
    System.out.println("Joined String: " + joinedString);
  }
}

输出

First String: Hello!
Second String: World
Joined String: Hello! World

在上面的示例中,我们创建了2个名为greetname的 字符串 。

在这里,我们使用了concat()方法来连接字符串。因此,我们得到一个名为joinedString的新字符串 。


在Java中,我们还可以使用+ 运算符连接两个字符串 。

示例3:使用+ 运算符的 Java连接字符串

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

    // create string
    String greet = "Hello! ";
    System.out.println("First String: " + greet);

    String name = "World";
    System.out.println("Second String: " + name);

    // join two strings
    String joinedString = greet + name;
    System.out.println("Joined String: " + joinedString);
  }
}

输出

First String: Hello!
Second String: World
Joined String: Hello! World

在这里,我们使用+ 运算符将两个字符串。


示例4:Java比较两个字符串

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

    // create strings
    String first = "java programming";
    String second = "java programming";
    String third = "python programming";

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

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

输出

Strings first and second are equal: true
Strings first and third are equal: false

在上面的示例中,我们使用了equals()方法比较两个字符串的值。

如果两个字符串相同,则该方法返回true ,否则返回false

注意 :我们还可以使用== 运算符和compareTo()方法在2个字符串之间进行比较。


示例5:Java从字符串获取字符

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

    // create string using the string literal
    String greet = "Hello! World";
    System.out.println("The string is: " + greet);

    // returns the character at 3
    System.out.println("The character at 3: " + greet.charAt(3));

    // returns the character at 7
    System.out.println("The character at 7: " + greet.charAt(7));
  }
}

输出

The string is: Hello! World
The character at 3: l
The character at 7: W

在上面的示例中,我们使用charAt()方法从指定位置访问字符 。


示例6:Java Strings其他方法

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

    // create string using the new keyword
    String example = new String("Hello! World");

    // returns the substring World
    System.out.println("Using the subString(): " + example.substring(7));

    // converts the string to lowercase
    System.out.println("Using the toLowerCase(): " + example.toLowerCase());

    // converts the string to uppercase
    System.out.println("Using the toUpperCase(): " + example.toUpperCase());

    // replaces the character '!' with 'o'
    System.out.println("Using the replace(): " + example.replace('!', 'o'));
  }
}

输出

Using the subString(): World
Using the toLowerCase(): hello! world
Using the toUpperCase(): HELLO! WORLD
Using the replace(): Helloo World

在上面的示例中,我们使用new关键字创建了一个名为example的字符串 。

这里,

  • substring()方法返回字符串 World
  • toLowerCase()方法将字符串转换为小写
  • toUpperCase()方法将字符串转换为大写
  • replace()方法替换字符 “!”‘o’

字符串的转义字符

 

Java中的字符串用双引号表示。例如,

// create a string
String example = "This is a string";

现在,如果我们想在字符串包含双引号 。例如,

// include double quote 
String example = "This is the "String" class";

这将导致错误。这是因为使用双引号来表示字符串。因此,编译器会将“ This is”视为字符串。

为了解决此问题,在Java中使用了转义字符 \ 。现在我们可以在字符串包含双引号

// use the escape character
String example = "This is the \"String\" class.";

转义字符告诉编译器转义双引号并读取整个文本。


Java字符串是不可变的

在Java中,创建字符串意味着创建String类的对象。创建字符串,我们无法在Java中更改该字符串 。这就是为什么在Java中将字符串称为不可变的原因。

为了更深入地理解它,让我们考虑一个示例:

// create a string
String example = "Hello!";

在这里,我们创建了一个字符串对象"Hello!" 。创建之后,我们将无法更改它。

现在假设我们要更改字符串。

// adds another string to the string
example = example.concat(" World");

在这里,我们尝试将新字符串添加到先前的字符串。

由于字符串是不可变的 ,因此应导致错误。但这很好。

现在看来我们可以更改字符串了。但是,事实并非如此。让我们看看这里实际发生了什么。

我们有一个字符串 “ Hello!”。 ,由名为example的变量引用。现在,在执行上面的代码时,

  • JVM接受字符串 “ Hello!”。
  • 附加字符串 “世界”
  • 这将创建一个新字符串 “ Hello!World”
  • 变量示例现在引用了新字符串
  • 上一个字符串 “ Hello!”保持不变

注意 :每次创建新字符串并由变量引用它时。


使用new关键字创建字符串

到目前为止,我们已经在Java中创建了类似于基本类型的字符串 。但是,由于Java中的字符串是对象,因此我们也可以使用new关键字进行创建。例如,

// create a string using the new keyword
String name = new String("java string");

在上面的示例中,我们使用了new关键字以及构造函数String()来创建一个字符串。

String类提供了其他各种构造函数来创建字符串。要了解所有这些构造函数,请访问Java String(Java官方文档)。

现在,让我们看一下创建字符串的过程与上一个过程有何不同。


使用字符串字面量和new关键字之间的区别

现在我们知道如何字符串使用字符串 字面量和创建new关键字,让我们来看看它们之间有什么主要区别。

在Java中,JVM维护一个字符串池以将其所有字符串存储在内存中。 字符串池有助于重用字符串 。

使用字符串 字面量创建字符串 ,将直接提供字符串的值。因此,编译器首先检查字符串池以查看字符串已经存在。

  • 如果字符串已经存在 ,则不会创建新字符串 。而是,新引用指向现有的字符串。
  • 如果字符串不存在 ,则创建新字符串 。

但是,在使用new关键字创建字符串 ,不会直接提供字符串的值。因此,新字符串始终被创建。