亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 字符串(String)

在本教程中,我們將借助示例學(xué)習(xí)Java String,如何創(chuàng)建它及其各種方法。

 在Java中,字符串是一系列字符。例如,“hello”是一個(gè)包含字符序列“h”、“e”、“l(fā)”、“l(fā)”和“o”的字符串。

與其他編程語(yǔ)言不同,Java中的字符串不是基本類型(比如int、char等)。相反,所有字符串都是預(yù)定義的名為String的類的對(duì)象。例如,

//創(chuàng)建一個(gè)字符串
String type = "java programming";

在這里,我們創(chuàng)建了一個(gè)名為type的字符串。在這里,我們使用"java programming"初始化了字符串。在Java中,我們使用雙引號(hào)表示字符串。

該字符串是String類的實(shí)例。

注意:所有字符串變量都是String類的實(shí)例。

Java字符串方法

Java String提供了各種方法,使我們可以執(zhí)行不同的字符串操作。以下是一些常用的字符串方法。

方法描述
concat()將兩個(gè)字符串連接在一起
equals()比較兩個(gè)字符串的值
charAt()返回存在于指定位置的字符
getBytes()將字符串轉(zhuǎn)換為字節(jié)數(shù)組
indexOf()返回字符串中指定字符的位置
length()返回指定字符串的大小
replace()將指定的舊字符替換為指定的新字符
substring()返回字符串的子字符串
split()將字符串分成字符串?dāng)?shù)組
toLowerCase()將字符串轉(zhuǎn)換為小寫
toUpperCase()將字符串轉(zhuǎn)換為大寫
valueOf()返回指定數(shù)據(jù)的字符串表示形式

讓我們舉幾個(gè)實(shí)例。

示例1:Java查找字符串的長(zhǎng)度

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

    //創(chuàng)建字符串
    String greet = "Hello! World";
    System.out.println("字符串是: " + greet);

    //checks the string length
    System.out.println("字符串的長(zhǎng)度: " + greet.length());
  }
}

輸出結(jié)果

字符串是: Hello! World
字符串的長(zhǎng)度: 12

在上面的示例中,我們創(chuàng)建了一個(gè)名為greet的字符串。在這里,我們使用了length()方法來(lái)獲取字符串的大小。

示例2:Java使用concat()連接兩個(gè)字符串

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

    //創(chuàng)建字符串
    String greet = "Hello! ";
    System.out.println("第一個(gè)字符串: " + greet);

    String name = "World";
    System.out.println("第二個(gè)字符串: " + name);

    //連接兩個(gè)字符串
    String joinedString = greet.concat(name);
    System.out.println("連接后的字符串: " + joinedString);
  }
}

輸出結(jié)果

第一個(gè)字符串: Hello!
第二個(gè)字符串: World
連接后的字符串: Hello! World

在上面的示例中,我們創(chuàng)建了2個(gè)名為greet和name的字符串。

在這里,我們使用了concat()方法來(lái)連接字符串。因此,我們得到一個(gè)名為joinedString的新字符串。

在Java中,我們還可以使用 + 運(yùn)算符來(lái)連接兩個(gè)字符串。

示例3:使用+運(yùn)算符的Java連接字符串

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

    //創(chuàng)建字符串
    String greet = "Hello! ";
    System.out.println("第一個(gè)字符串: " + greet);

    String name = "World";
    System.out.println("第二個(gè)字符串: " + name);

    //連接兩個(gè)字符串
    String joinedString = greet + name;
    System.out.println("連接后的字符串: " + joinedString);
  }
}

輸出結(jié)果

第一個(gè)字符串: Hello!
第二個(gè)字符串: World
連接后的字符串: Hello! World

在這里,我們使用了+運(yùn)算符來(lái)連接兩個(gè)字符串。

示例4:Java比較兩個(gè)字符串

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

    //創(chuàng)建字符串s
    String first = "java programming";
    String second = "java programming";
    String third = "python programming";

    //比較第一個(gè)字符串和第二個(gè)字符串
    boolean result1 = first.equals(second);
    System.out.println("第一和第二個(gè)字符串相等: " + result1);

    //比較第一個(gè)和第三個(gè)字符串
    boolean result2 = first.equals(third);
    System.out.println("第一和第三個(gè)字符串相等: " + result2);
  }
}

輸出結(jié)果

第一和第二個(gè)字符串相等: true
第一和第三個(gè)字符串相等: false

在上面的示例中,我們使用了equals()方法來(lái)比較兩個(gè)字符串的值。

如果兩個(gè)字符串相同,則該方法返回true,否則返回false。

注意:我們還可以使用 == 運(yùn)算符 和 compareTo()方法比較2個(gè)字符串。

示例5:Java從字符串中獲取字符

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

    //創(chuàng)建字符串 using the string literal
    String greet = "Hello! World";
    System.out.println("字符串是: " + greet);

    //返回位置3處的字符
    System.out.println("位置3處的字符: " + greet.charAt(3));

    //返回位置7處的字符
    System.out.println("位置7處的字符: " + greet.charAt(7));
  }
}

輸出結(jié)果

字符串是: Hello! World
位置3處的字符: l
位置7處的字符: W

在上面的示例中,我們使用了charAt()方法從指定位置訪問(wèn)字符。

示例6:Java Strings其他方法

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

    //創(chuàng)建字符串 using the new keyword
    String example = new String("Hello! World");

    //返回子字符串World
    System.out.println("使用 subString(): " + example.substring(7));

    //將字符串轉(zhuǎn)換為小寫
    System.out.println("使用 toLowerCase(): " + example.toLowerCase());

    //將字符串轉(zhuǎn)換為大寫
    System.out.println("使用 toUpperCase(): " + example.toUpperCase());

    //替換字符'!”為“o”
    System.out.println("使用 replace(): " + example.replace('!', 'o'));
  }
}

輸出結(jié)果

使用 subString(): World
使用 toLowerCase(): hello! world
使用 toUpperCase(): HELLO! WORLD
使用 replace(): Helloo World

在上面的示例中,我們使用new關(guān)鍵字創(chuàng)建了一個(gè)命名為example的字符串。

這里,

  • substring() 方法返回字符串World

  • toLowerCase() 方法將字符串轉(zhuǎn)換為小寫

  • toUpperCase() 方法將字符串轉(zhuǎn)換為大寫

  • replace() 方法替換字符'!'為'o'。

字符串中的轉(zhuǎn)義字符

Java中的字符串用雙引號(hào)表示。例如,

//創(chuàng)建字符串
String example = "This is a string";

現(xiàn)在,如果我們想在字符串中包含雙引號(hào)。例如,

//字符串包含雙引號(hào)
String example = "This is the "String" class";

這將導(dǎo)致錯(cuò)誤。這是因?yàn)槭褂?strong>雙引號(hào)來(lái)表示字符串。因此,編譯器會(huì)將其"This is the "視為字符串。

為了解決此問(wèn)題,在Java中使用了轉(zhuǎn)義字符(\)?,F(xiàn)在我們可以在字符串中包含雙引號(hào),如下所示:

//使用轉(zhuǎn)義字符
String example = "This is the \"String\" class.";

轉(zhuǎn)義字符告訴編譯器轉(zhuǎn)義雙引號(hào)并讀取整個(gè)文本。

Java字符串是不可變的

在Java中,創(chuàng)建字符串意味著創(chuàng)建string類的對(duì)象。創(chuàng)建字符串時(shí),無(wú)法在Java中更改該字符串。這就是為什么在Java中將字符串稱為不可變的原因。

為了更深入地理解它,讓我們看一個(gè)示例:

//創(chuàng)建字符串
String example = "Hello!";

在這里,我們創(chuàng)建了一個(gè)字符串對(duì)象"Hello!"。創(chuàng)建之后,我們將無(wú)法更改它。

現(xiàn)在假設(shè)我們要更改字符串。

//向該字符串添加另一個(gè)字符串
example = example.concat(" World");

在這里,我們嘗試將新的字符串添加到先前的字符串。

由于字符串是不可變的,它應(yīng)該會(huì)導(dǎo)致錯(cuò)誤。但是這樣做很好。

現(xiàn)在看來(lái)我們可以更改字符串了。但是,事實(shí)并非如此。讓我們看看這里實(shí)際發(fā)生了什么。

我們有一個(gè)字符串"Hello!",由名為example的變量引用?,F(xiàn)在,在執(zhí)行上面的代碼時(shí),

  • JVM接受字符串 "Hello!"

  • 將字符串" World" 追加到它

  • 這將創(chuàng)建一個(gè)新字符串 "Hello! World"

  • 變量example現(xiàn)在指向新字符串

  • 前一個(gè)字符串"Hello!"保持不變

注意:每次創(chuàng)建新字符串并由變量引用它時(shí)。

使用new關(guān)鍵字創(chuàng)建字符串

到目前為止,我們已經(jīng)在Java中創(chuàng)建了類似于基本類型的字符串。但是,由于Java中的字符串是對(duì)象,因此我們也可以使用new關(guān)鍵字進(jìn)行創(chuàng)建。例如,

//創(chuàng)建字符串使用new關(guān)鍵字
String name = new String("java string");

在上面的示例中,我們使用了new關(guān)鍵字和構(gòu)造函數(shù)String()來(lái)創(chuàng)建一個(gè)字符串。

String類提供各種其他構(gòu)造函數(shù)創(chuàng)建的字符串。

現(xiàn)在,讓我們看看創(chuàng)建字符串的過(guò)程與上一個(gè)過(guò)程有何不同。

使用字符串字面量和new關(guān)鍵字之間的區(qū)別

現(xiàn)在我們知道了如何使用字符串字面量和new關(guān)鍵字創(chuàng)建字符串,讓我們看看它們之間的主要區(qū)別是什么。

 在Java中,JVM維護(hù)一個(gè)字符串池來(lái)將其所有字符串存儲(chǔ)在內(nèi)存中。字符串池有助于重用字符串。

 使用字符串文字創(chuàng)建字符串時(shí),直接提供字符串的值。因此,編譯器首先檢查字符串池,看看字符串是否已經(jīng)存在。

  • 如果字符串已經(jīng)存在, 不會(huì)創(chuàng)建新字符串。相反,新引用指向現(xiàn)有字符串。

  • 如果字符串不存在,則創(chuàng)建新字符串。

 但是,在使用new關(guān)鍵字創(chuàng)建字符串時(shí),不會(huì)直接提供字符串的值。因此,新字符串總是被創(chuàng)建。