Java 字符串String

字符串

字符串:使用雙引號引住的任意個字符,稱為字符串。在java中使用String類表示字符串。

字符

字符:單引號引住的一個字符,用char表示,字符串是字符的數(shù)組。

字符數(shù)組轉(zhuǎn)換為字符串
    public static void main(String[] args) {
        //定義字符數(shù)組
        char ch[] = {'j','j','x','y'};
        //將字符數(shù)組轉(zhuǎn)換為字符串
        String str = new String(ch);
        System.out.println(str);
    }
字符串轉(zhuǎn)換為字符數(shù)組
    public static void main(String[] args) {
        String str = "jjxy";
        char[] chars = str.toCharArray();
        for (char ch:chars ) {
            System.out.println(ch);
        }
    }

字符串與字面量

java創(chuàng)建字符串有兩種方式
1.字面量:直接使用雙引號定義的字符串叫做字面量。
2.字符串對象:使用new 運(yùn)算符創(chuàng)建的字符串叫做字符串對象。
區(qū)別:字面量存儲位置為常量池或者元空間中。字符串對象存儲在堆中。

String StringBuffer StringBuilder

String

1.String聲明為final的,不可被繼承
2.String實(shí)現(xiàn)了Serializable接口:表示字符串是支持序列化的。
實(shí)現(xiàn)了Comparable接口:表示String可以比較大小
3.String內(nèi)部定義了final char[] value用于存儲字符串?dāng)?shù)據(jù)
4.String:代表不可變的字符序列。簡稱:不可變性。
??體現(xiàn):

  • 當(dāng)對字符串重新賦值時,需要重寫指定內(nèi)存區(qū)域賦值,不能使用原有的value進(jìn)行賦值。
  • 當(dāng)對現(xiàn)有的字符串進(jìn)行連接操作時,也需要重新指定內(nèi)存區(qū)域賦值,不能使用原有的value進(jìn)行賦值。
  • 當(dāng)調(diào)用String的replace()方法修改指定字符或字符串時,也需要重新指定內(nèi)存區(qū)域賦值,不能使用原有的value進(jìn)行賦值。

5.通過字面量的方式(區(qū)別于new)給一個字符串賦值,此時的字符串值聲明在字符串常量池中。
6.字符串常量池中是不會存儲相同內(nèi)容的字符串的。

StringBuff

1.java.lang.StringBuffer代表可變的字符序列,JDK1.0中聲明,可以對字符串內(nèi)容進(jìn)行增刪,此時不會產(chǎn)生新的對象。
2.線程安全的,效率低
3.作為參數(shù)傳遞時,方法內(nèi)部可以改變值。
4.StringBuffer類不同于String,其對象必須使用構(gòu)造器生成

  • StringBuffer():初始容量為16的字符串緩沖區(qū)
  • StringBuffer(int size):構(gòu)造指定容量的字符串緩沖區(qū)
  • StringBuffer(String str):將內(nèi)容初始化為指定字符串內(nèi)容

5.擴(kuò)容問題:如果要添加的數(shù)據(jù)底層數(shù)組盛不下了,那就需要擴(kuò)容底層的數(shù)組。(默認(rèn)情況下,擴(kuò)容為原來容量的2倍 + 2,同時將原有數(shù)組中的元素復(fù)制到新的數(shù)組中。)

StringBuilder

StringBuilder 和 StringBuffer 非常類似,均代表可變的字符序列,而且提供相關(guān)功能的方法也一樣,但它是線程不安全的,所以效率高


字符串常用方法

字符串連接 +

 public static void main(String[] args) {
        String firstName = "李";
        String lastName = "逵";
        String fullName = firstName + lastName;
        System.out.println(fullName);//李逵
    }

字符串連接 concat

  public static void main(String[] args) {
        String firstName = "李";
        String lastName = "逵";
        String fullName = firstName.concat(lastName);
        System.out.println(fullName);//李逵
    }

字符串相等比較 ==

  public static void main(String[] args) {
        String firstName = "李";
        String lastName = "李";
        //判斷firstName和lastName指向同一塊內(nèi)存嗎,比較的是值,不是內(nèi)容
        boolean result = firstName == lastName;
        System.out.println(result);//true
    }

字符串相等比較 equals

public static void main(String[] args) {
        String firstName = "李";
        String lastName = "李";
        //判斷firstName和lastName指向同一塊內(nèi)存嗎,比較的是值,不是內(nèi)容
        boolean result1 = firstName.equals(lastName);
        boolean result2 = firstName == lastName;
        System.out.println(result1);//true
        System.out.println(result2);//true
    }

 public static void main(String[] args) {
        String firstName = new String("李");
        String lastName =  new String("李");
        //判斷firstName和lastName指向同一塊內(nèi)存嗎,比較的是值,不是內(nèi)容
        boolean result1 = firstName.equals(lastName);
        boolean result2 = firstName==lastName;
        System.out.println(result1);//true
        System.out.println(result2);//false
    }

字符串忽略大小寫相等比較 equalsIgnoreCase

public static void main(String[] args) {
        String firstName = "li";
        String lastName = "Li";
        //判斷firstName和lastName指向同一塊內(nèi)存嗎,比較的是值,不是內(nèi)容
        boolean result1 = firstName.equalsIgnoreCase(lastName);
        System.out.println(result1);//true
    }

字符串長度 length()

public static void main(String[] args) {
        String username = "admin";
        int length = username.length();
        System.out.println(length); // 5
    }

在字符串種查找 indexOf

    public static void main(String[] args) {
        String filename = "D:\\2002-07-09\\JavaAPI\\JDK_API_1.8_zh_CN.CHM";
        int index = filename.indexOf("JavaAPI");
        System.out.println(index);//14  找不到返回-1
    }

轉(zhuǎn)大寫 toUpperCase

 public static void main(String[] args) {
        String word = "aoHaYgaoZayiMskongbaWAATAXIWA";
        System.out.println(word.toUpperCase());
        System.out.println(word);
    }

轉(zhuǎn)小寫 toLowerCase

  public static void main(String[] args) {
        String word = "aoHaYgaoZayiMskongbaWAATAXIWA";
        System.out.println(word.toLowerCase());
        System.out.println(word);
    }

切割字符串 split

public static void main(String[] args) {
        String mail = "admin@itlaobing@.com";
        int index1 = mail.indexOf("@");
        int index2 = mail.lastIndexOf("@");
        System.out.println(index1);//5
        System.out.println(index2);//15
        if((index1 == index2)&& index1!=-1 && index2!=-1){
            System.out.println("合法");
        }else{
            System.out.println("不合法");
        }
    }

 public static void main(String[] args) {
        String mail = "admin@itlaobing.com";
        String[] split = mail.split("@");
        if(split.length==2){
            System.out.println("合法");
        }else{
            System.out.println("不合法");
        }
    }

字符串開頭 startsWith

 public static void main(String[] args) {
        String website = "www.itlaobing.cn";
        System.out.println(website.startsWith("www"));
    }

字符串結(jié)尾 endsWith

 public static void main(String[] args) {
        String website = "www.itlaobing.cn";
        System.out.println(website.endsWith("com"));
    }

去掉兩邊的空格 trim

 public static void main(String[] args) {
        String username = " admin ";
        System.out.println(username.trim());//去掉兩邊的空格
    }

替換字符串內(nèi)容 replace

 public static void main(String[] args) {
        String str = "今天我吃了一個壞蛋黃派";
        str = str.replace("壞蛋","**");
        System.out.println(str);
    }

截取子串 substring

public static void main(String[] args) {
        String file = "d:\\2002-07-09\\javaapi\\jdk_api_1.6_zh_cn.chm";
        int startIndex  = file.lastIndexOf("\\")+1;
        int dotIndex = file.lastIndexOf(".");
        String filename = file.substring(startIndex, dotIndex);
        System.out.println(filename);
    }

截取字符 charAt

 public static void main(String[] args) {
        String str = "admin@123456";
        char ch = str.charAt(5);
        int index = str.indexOf("@");
        System.out.println(ch);
        System.out.println(index);
    }

字符串格式化輸出 format

public static void main(String[] args) {
        String str = null;
        str = String.format("見過,%s及%s", "晁天王", "眾位頭領(lǐng)");
        System.out.println(str);
        str = String.format("字母a的大寫是:%c", 'A');
        System.out.println(str);
        str = String.format("3>7的結(jié)果是:%b", 3 > 7);
        System.out.println(str);
        str = String.format("100的一半是:%d", 100 / 2);
        System.out.println(str);
        // 使用printf()方法代替format方法來格式化字符串
        System.out.printf("50元的書打8.5折扣是:%f 元", 50 * 0.85);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容