国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八)

這篇具有很好參考價(jià)值的文章主要介紹了從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.API

1.1API概述

  • 什么是API

    ? API (Application Programming Interface) :應(yīng)用程序編程接口

  • java中的API

    ? 指的就是 JDK 中提供的各種功能的 Java類,這些類將底層的實(shí)現(xiàn)封裝了起來,我們不需要關(guān)心這些類是如何實(shí)現(xiàn)的,只需要學(xué)習(xí)這些類如何使用即可,我們可以通過幫助文檔來學(xué)習(xí)這些API如何使用。

1.2如何使用API幫助文檔

  • 打開幫助文檔

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

  • 找到索引選項(xiàng)卡中的輸入框

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

  • 在輸入框中輸入Random

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

  • 看類在哪個(gè)包下

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

  • 看類的描述

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

  • 看構(gòu)造方法

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

  • 看成員方法

從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八),java基礎(chǔ),學(xué)習(xí),java,開發(fā)語(yǔ)言,intellij-idea,spring boot

2.String類

2.1String類概述

? String 類代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被實(shí)現(xiàn)為此類的實(shí)例。也就是說,Java 程序中所有的雙引號(hào)字符串,都是 String 類的對(duì)象。String 類在 java.lang 包下,所以使用的時(shí)候不需要導(dǎo)包!

2.2String類的特點(diǎn)

  • 字符串不可變,它們的值在創(chuàng)建后不能被更改
  • 雖然 String 的值是不可變的,但是它們可以被共享
  • 字符串效果上相當(dāng)于字符數(shù)組( char[] ),但是底層原理是字節(jié)數(shù)組( byte[] )

2.3String類的構(gòu)造方法

  • 常用的構(gòu)造方法

    方法名 說明
    public String() 創(chuàng)建一個(gè)空白字符串對(duì)象,不含有任何內(nèi)容
    public String(char[] chs) 根據(jù)字符數(shù)組的內(nèi)容,來創(chuàng)建字符串對(duì)象
    public String(byte[] bys) 根據(jù)字節(jié)數(shù)組的內(nèi)容,來創(chuàng)建字符串對(duì)象
    String s = “abc”; 直接賦值的方式創(chuàng)建字符串對(duì)象,內(nèi)容就是abc
  • 示例代碼

    public class StringDemo01 {
        public static void main(String[] args) {
            //public String():創(chuàng)建一個(gè)空白字符串對(duì)象,不含有任何內(nèi)容
            String s1 = new String();
            System.out.println("s1:" + s1);
    
            //public String(char[] chs):根據(jù)字符數(shù)組的內(nèi)容,來創(chuàng)建字符串對(duì)象
            char[] chs = {'a', 'b', 'c'};
            String s2 = new String(chs);
            System.out.println("s2:" + s2);
    
            //public String(byte[] bys):根據(jù)字節(jié)數(shù)組的內(nèi)容,來創(chuàng)建字符串對(duì)象
            byte[] bys = {97, 98, 99};
            String s3 = new String(bys);
            System.out.println("s3:" + s3);
    
            //String s = “abc”;	直接賦值的方式創(chuàng)建字符串對(duì)象,內(nèi)容就是abc
            String s4 = "abc";
            System.out.println("s4:" + s4);
        }
    }
    

2.4創(chuàng)建字符串對(duì)象兩種方式的區(qū)別

  • 通過構(gòu)造方法創(chuàng)建

    ? 通過 new 創(chuàng)建的字符串對(duì)象,每一次 new 都會(huì)申請(qǐng)一個(gè)內(nèi)存空間,雖然內(nèi)容相同,但是地址值不同

  • 直接賦值方式創(chuàng)建

    ? 以“”方式給出的字符串,只要字符序列相同(順序和大小寫),無論在程序代碼中出現(xiàn)幾次,JVM 都只會(huì)建立一個(gè) String 對(duì)象,并在字符串池中維護(hù)

2.5字符串的比較

2.5.1==號(hào)的作用
  • 比較基本數(shù)據(jù)類型:比較的是具體的值
  • 比較引用數(shù)據(jù)類型:比較的是對(duì)象地址值
2.5.2equals方法的作用
  • 方法介紹

    public boolean equals(String s)     比較兩個(gè)字符串內(nèi)容是否相同、區(qū)分大小寫
    
  • 示例代碼

    public class StringDemo02 {
        public static void main(String[] args) {
            //構(gòu)造方法的方式得到對(duì)象
            char[] chs = {'a', 'b', 'c'};
            String s1 = new String(chs);
            String s2 = new String(chs);
    
            //直接賦值的方式得到對(duì)象
            String s3 = "abc";
            String s4 = "abc";
    
            //比較字符串對(duì)象地址是否相同
            System.out.println(s1 == s2);
            System.out.println(s1 == s3);
            System.out.println(s3 == s4);
            System.out.println("--------");
    
            //比較字符串內(nèi)容是否相同
            System.out.println(s1.equals(s2));
            System.out.println(s1.equals(s3));
            System.out.println(s3.equals(s4));
        }
    }
    

2.6用戶登錄案例

2.6.1案例需求

? 已知用戶名和密碼,請(qǐng)用程序?qū)崿F(xiàn)模擬用戶登錄??偣步o三次機(jī)會(huì),登錄之后,給出相應(yīng)的提示

2.6.2代碼實(shí)現(xiàn)
public class Test1登錄案例 {
    public static void main(String[] args) {
        //1.定義兩個(gè)變量用來記錄正確的用戶名和密碼
        String rightUsername = "itheima";
        String rightPassword = "1234qwer";

        //2.鍵盤錄入用戶名和密碼
        //ctrl + alt + T 選擇包裹方式

        for (int i = 0; i < 3; i++) {//0 1 2
            Scanner sc = new Scanner(System.in);
            System.out.println("請(qǐng)輸入用戶名");
            String username = sc.next();
            System.out.println("請(qǐng)輸入密碼");
            String password = sc.next();

            //3.判斷比較
            if (username.equals(rightUsername) && password.equals(rightPassword)) {
                System.out.println("登錄成功");
                //如果正確,循環(huán)結(jié)束
                break;
            } else {
                //最后一次機(jī)會(huì)
                if(i == 2){
                    System.out.println("賬戶" + username + "被鎖定,請(qǐng)聯(lián)系黑馬程序員官方小姐姐:XXXXXXX");
                }else{
                    //不是最后一次機(jī)會(huì)
                    System.out.println("用戶名或密碼錯(cuò)誤,登錄失敗,還剩下" + (2 - i) + "次機(jī)會(huì)");//2 1 0
                }
            }
        }

    }
}

2.7遍歷字符串案例

2.7.1案例需求

? 鍵盤錄入一個(gè)字符串,使用程序?qū)崿F(xiàn)在控制臺(tái)遍歷該字符串

2.7.2直接遍歷字符串
public class Test2字符串直接遍歷 {
    public static void main(String[] args) {
        //兩個(gè)方法:
        //charAt():會(huì)根據(jù)索引獲取對(duì)應(yīng)的字符
        //length(): 會(huì)返回字符串的長(zhǎng)度


        //1.鍵盤錄入一個(gè)字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入字符串");
        String str = sc.next();
        System.out.println(str);

        //2.遍歷
        for (int i = 0; i < str.length(); i++) {
            //i 依次表示字符串的每一個(gè)索引
            //索引的范圍:0 ~  長(zhǎng)度-1

            //根據(jù)索引獲取字符串里面的每一個(gè)字符
            //ctrl + alt + V 自動(dòng)生成左邊的接受變量
            char c = str.charAt(i);
            System.out.println(c);
        }
    }
}

2.8統(tǒng)計(jì)字符次數(shù)案例

2.8.1案例需求

? 鍵盤錄入一個(gè)字符串,統(tǒng)計(jì)該字符串中大寫字母字符,小寫字母字符,數(shù)字字符出現(xiàn)的次數(shù)(不考慮其他字符)

2.8.2代碼實(shí)現(xiàn)
public class Test4統(tǒng)計(jì)個(gè)數(shù) {
    public static void main(String[] args) {
        //鍵盤錄入一個(gè)字符串,統(tǒng)計(jì)大寫,小寫,數(shù)字出現(xiàn)的次數(shù)


        //1.鍵盤錄入一個(gè)字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)字符串");
        String str = sc.next();


        //2.統(tǒng)計(jì) --- 計(jì)數(shù)器count
        //此時(shí)我要統(tǒng)計(jì)的有3樣?xùn)|西,所以要定義3個(gè)計(jì)數(shù)器分別進(jìn)行統(tǒng)計(jì)
        int bigCount = 0;
        int smallCount = 0;
        int numberCount = 0;
        //得到這個(gè)字符串里面每一個(gè)字符
        for (int i = 0; i < str.length(); i++) {
            //i 表示字符串中的索引
            //c 表示字符串中的每一個(gè)字符
            char c = str.charAt(i);

            //對(duì)c進(jìn)行判斷
            if (c >= 'a' && c <= 'z') {
                smallCount++;
            }else if(c >= 'A' && c <= 'Z'){
                bigCount++;
            }else if(c >= '0' && c <= '9'){
                numberCount++;
            }
        }

        //3.當(dāng)循環(huán)結(jié)束之后,三個(gè)變量記錄的就是對(duì)應(yīng)的個(gè)數(shù)
        System.out.println("大寫字符有:" + bigCount + "個(gè)");
        System.out.println("小寫字符有:" + smallCount + "個(gè)");
        System.out.println("數(shù)字字符有:" + numberCount + "個(gè)");
    }
}

2.9字符串拼接案例

2.9.1案例需求

? 定義一個(gè)方法,把 int 數(shù)組中的數(shù)據(jù)按照指定的格式拼接成一個(gè)字符串返回,調(diào)用該方法,

? 并在控制臺(tái)輸出結(jié)果。例如,數(shù)組為 int[] arr = {1,2,3}; ,執(zhí)行方法后的輸出結(jié)果為:[1, 2, 3]

2.9.2代碼實(shí)現(xiàn)
public class Test5數(shù)組拼接成字符串 {
    public static void main(String[] args) {
        //定義一個(gè)方法,把 int 數(shù)組中的數(shù)據(jù)按照指定的格式拼接成一個(gè)字符串返回,調(diào)用該方法,
        //并在控制臺(tái)輸出結(jié)果。例如,數(shù)組為 int[] arr = {1,2,3};
        //執(zhí)行方法后的輸出結(jié)果為:[1, 2, 3]


        int[] arr = {1, 2, 3, 4, 5};

        String str = arrToString(arr);
        System.out.println(str);

    }


    //作用:把一個(gè)數(shù)組變成字符串
    public static String arrToString(int[] arr) {
        String s = "";
        //拼接左括號(hào)
        s = s + "["; //此時(shí)是拿著長(zhǎng)度為0的字符串,跟[進(jìn)行拼接,產(chǎn)生一個(gè)新的字符串。
        //把新的字符串再賦值給s,此時(shí)變量s記錄的就是新的字符串"["的地址值

        //下面我想得到數(shù)組里面的每一個(gè)元素并進(jìn)行拼接
        //那么就需要遍歷數(shù)組,得到每一個(gè)元素才行
        for (int i = 0; i < arr.length; i++) {
            //假設(shè)第一次循環(huán):i = 0 獲取的就是0索引上的元素
            //在拼接的時(shí)候:"[" + 1 + ", " 拼接完畢之后產(chǎn)生一個(gè)新的字符串 "[1, "
            //第二次循環(huán):i = 1 獲取的就是1索引上的元素
            //在拼接的時(shí)候: 此時(shí)s就是第一次循環(huán)結(jié)束后拼接完畢的結(jié)果:"[1, "
            //在拼接的時(shí)候:"[1, " + 2 + ", " 拼接完畢之后產(chǎn)生一個(gè)新的字符串 "[1, 2, "
            //...
           if(i == arr.length - 1){
               //如果是最后一個(gè)元素,那么不需要拼接逗號(hào)空格
               s = s + arr[i];
           }else{
               //如果不是最后一個(gè)元素,需要拼接元素和逗號(hào)空格
               s = s + arr[i] + ", ";
           }
        }

        //等循環(huán)結(jié)束之后,再拼接最后一個(gè)右括號(hào)
        s = s + "]";

        return s;

    }


    //用來遍歷數(shù)組
    public static void printArr(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                System.out.print(arr[i]);
            } else {
                System.out.print(arr[i] + ", ");
            }
        }
        System.out.println("]");

        //[1, 2, 3, 4, 5]
        //我們現(xiàn)在要知道,這個(gè)最終結(jié)果是怎么來的?
        //從到右依次打印得來的。
    }
}

2.10字符串反轉(zhuǎn)案例

2.10.1案例需求

? 定義一個(gè)方法,實(shí)現(xiàn)字符串反轉(zhuǎn)。鍵盤錄入一個(gè)字符串,調(diào)用該方法后,在控制臺(tái)輸出結(jié)果

? 例如,鍵盤錄入 abc,輸出結(jié)果 cba

2.10.2代碼實(shí)現(xiàn)
public class Test6反轉(zhuǎn)字符串 {
    public static void main(String[] args) {
        /*定義一個(gè)方法,實(shí)現(xiàn)字符串反轉(zhuǎn)。鍵盤錄入一個(gè)字符串,調(diào)用該方法后,在控制臺(tái)輸出結(jié)果
        例如,鍵盤錄入 abc,輸出結(jié)果 cba*/



        //1.定義一個(gè)字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)字符串");
        String str = sc.next();
        //2.定義一個(gè)方法,反轉(zhuǎn)字符串
        //abc  --->  cba
        //可以把字符串倒著遍歷,再拼接
        String result = reverse(str);
        System.out.println(result);


    }

    //注釋:方法的作用就是反轉(zhuǎn)字符串
    //把傳遞進(jìn)來的字符串進(jìn)行反轉(zhuǎn)
    public static String reverse(String str){//abc
        //核心思想:倒著遍歷并進(jìn)行拼接就可以了
        //fori :正著遍歷  forr:倒著遍歷
        String s = "";
        for (int i = str.length() - 1; i >= 0; i--) {
            //i 依次表示字符串里面的每一個(gè)索引(倒著的)
            //我們就可以拿到里面的每一個(gè)字符并拼接
            s = s + str.charAt(i);
        }

        //把倒著拼接之后的結(jié)果返回即可
        return s;

    }
}

2.11 金額轉(zhuǎn)換

2.11.1 案例需求

? 把2135變成:零佰零拾零萬(wàn)貳仟壹佰叁拾伍元

? 把789變成:零佰零拾零萬(wàn)零仟柒佰捌拾玖元

2.11.2 代碼實(shí)現(xiàn)
package com.itheima.stringdemo;

import java.util.Scanner;

public class StringDemo9 {
    public static void main(String[] args) {
        //1.鍵盤錄入一個(gè)金額
        Scanner sc = new Scanner(System.in);
        int money;
        while (true) {
            System.out.println("請(qǐng)錄入一個(gè)金額");
            money = sc.nextInt();
            if (money >= 0 && money <= 9999999) {
                break;
            } else {
                System.out.println("金額無效");
            }
        }

        //定義一個(gè)變量用來表示錢的大寫
        String moneyStr = "";

        //2.得到money里面的每一位數(shù)字,再轉(zhuǎn)成中文
        while (true) {//2135
            //從右往左獲取數(shù)據(jù),因?yàn)橛覀?cè)是數(shù)據(jù)的個(gè)位
            int ge = money % 10;
            String capitalNumber = getCapitalNumber(ge);
            //把轉(zhuǎn)換之后的大寫拼接到moneyStr當(dāng)中
            moneyStr = capitalNumber + moneyStr;
            //第一次循環(huán) : "伍" + "" = "伍"
            //第二次循環(huán) : "叁" + "伍" = "叁伍"
            //去掉剛剛獲取的數(shù)據(jù)
            money = money / 10;

            //如果數(shù)字上的每一位全部獲取到了,那么money記錄的就是0,此時(shí)循環(huán)結(jié)束
            if (money == 0) {
                break;
            }
        }

        //3.在前面補(bǔ)0,補(bǔ)齊7位
        int count = 7 - moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr = "零" + moneyStr;
        }
        System.out.println(moneyStr);//零零零貳壹叁伍

        //4.插入單位
        //定義一個(gè)數(shù)組表示單位
        String[] arr = {"佰","拾","萬(wàn)","仟","佰","拾","元"};
        //               零    零   零   貳   壹   叁   伍

        //遍歷moneyStr,依次得到 零    零   零   貳   壹   叁   伍
        //然后把a(bǔ)rr的單位插入進(jìn)去

        String result = "";
        for (int i = 0; i < moneyStr.length(); i++) {
            char c = moneyStr.charAt(i);
            //把大寫數(shù)字和單位拼接到result當(dāng)中
            result = result + c + arr[i];
        }

        //5.打印最終結(jié)果
        System.out.println(result);

    }


    //定義一個(gè)方法把數(shù)字變成大寫的中文
    //1 -- 壹
    public static String getCapitalNumber(int number) {
        //定義數(shù)組,讓數(shù)字跟大寫的中文產(chǎn)生一個(gè)對(duì)應(yīng)關(guān)系
        String[] arr = {"零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"};
        //返回結(jié)果
        return arr[number];
    }

}

2.12 手機(jī)號(hào)屏蔽

需求:以字符串的形式從鍵盤接受一個(gè)手機(jī)號(hào),將中間四位號(hào)碼屏蔽

最終效果為:131****9468

代碼實(shí)現(xiàn):

public class Test8手機(jī)號(hào)屏蔽 {
    public static void main(String[] args) {
        /*以字符串的形式從鍵盤接受一個(gè)手機(jī)號(hào),將中間四位號(hào)碼屏蔽
        最終效果為:131****9468*/

        //1.鍵盤錄入一個(gè)手機(jī)號(hào)碼
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入手機(jī)號(hào)碼");
        String phoneNumber = sc.next();//13112349408

        //2.截取手機(jī)號(hào)碼中的前三位
        String star = phoneNumber.substring(0, 3);

        //3.截取手機(jī)號(hào)碼中的最后四位
        //此時(shí)我用substring方法,是用1個(gè)參數(shù)的,還是兩個(gè)參數(shù)的?1個(gè)參數(shù)的會(huì)更好
        //因?yàn)楝F(xiàn)在我要截取到最后,所以建議使用1個(gè)參數(shù)的。
        String end = phoneNumber.substring(7);

        //4.拼接
        String result = star + "****" + end;

        System.out.println(result);

    }
}

2.13 敏感詞替換

需求1:鍵盤錄入一個(gè) 字符串,如果字符串中包含(TMD),則使用***替換

public class Test9敏感詞替換 {
    public static void main(String[] args) {
        //1.定義一個(gè)變量表示罵人的話
        String talk = "后裔你玩什么啊,TMD";


        //2.把這句話中的敏感詞進(jìn)行替換
        String result = talk.replace("TMD", "***");

        //3.打印
        System.out.println(talk);
        System.out.println(result);
    }
}

需求2:如果要替換的敏感詞比較多怎么辦?

public class Test10多個(gè)敏感詞替換 {
    public static void main(String[] args) {
        //實(shí)際開發(fā)中,敏感詞會(huì)有很多很多

        //1.先鍵盤錄入要說的話
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入要說的話");
        String talk = sc.next();//后裔你玩什么啊,TMD,GDX,ctmd,ZZ

        //2.定義一個(gè)數(shù)組用來存多個(gè)敏感詞
        String[] arr = {"TMD","GDX","ctmd","ZZ","lj","FW","nt"};

        //3.把說的話中所有的敏感詞都替換為***

        for (int i = 0; i < arr.length; i++) {
            //i 索引
            //arr[i] 元素 --- 敏感詞
            talk = talk.replace(arr[i],"***");
        }

        //4.打印結(jié)果
        System.out.println(talk);//后裔你玩什么啊,***,***,***,***

    }
}

2.14 身份證信息查看

? 身份證的每一位都是有固定的含義:

  • 1、2位:省份
  • 3、4位:城市
  • 5、6位:區(qū)縣
  • 7-14位:出生年、月、日
  • 15、16位:所在地派出所
  • 17位:性別(奇數(shù)男性,偶數(shù)女性)
  • 18位:個(gè)人信息碼(隨機(jī)產(chǎn)生)

要求打印內(nèi)容方式如下:

? 人物信息為:

? 出生年月日:XXXX年X月X日

? 性別為:男/女

package com.itheima.stringdemo;

public class StringDemo11 {
    public static void main(String[] args) {
        //1.定義一個(gè)字符串記錄身份證號(hào)碼
        String id = "321281202001011234";

        //2.獲取出生年月日
        String year = id.substring(6, 10);
        String month = id.substring(10, 12);
        String day = id.substring(12, 14);


        System.out.println("人物信息為:");
        System.out.println("出生年月日:" + year + "年" + month + "月" + day + "日");

        //3.獲取性別
        char gender = id.charAt(16);//'3'  ---> 3
        //利用ASCII碼表進(jìn)行轉(zhuǎn)換
        //'0' --->  48
        //'1' --->  49
        //'2' --->  50
        //'3' --->  51
        //'4' --->  52
        //'5' --->  53
        //'6' --->  54
        //'7' --->  55
        //'8' --->  56
        //'9' --->  57

       int num = gender - 48;
        if(num % 2 == 0){
            System.out.println("性別為:女");
        }else{
            System.out.println("性別為:男");
        }
    }
}

3.StringBuilder

StringBuilder 可以看成是一個(gè)容器,創(chuàng)建之后里面的內(nèi)容是可變的。

當(dāng)我們?cè)谄唇幼址头崔D(zhuǎn)字符串的時(shí)候會(huì)使用到

3.1 基本使用

public class StringBuilderDemo3 {
    public static void main(String[] args) {
        //1.創(chuàng)建對(duì)象
        StringBuilder sb = new StringBuilder("abc");

        //2.添加元素
        /*sb.append(1);
        sb.append(2.3);
        sb.append(true);*/

        //反轉(zhuǎn)
        sb.reverse();

        //獲取長(zhǎng)度
        int len = sb.length();
        System.out.println(len);


        //打印
        //普及:
        //因?yàn)镾tringBuilder是Java已經(jīng)寫好的類
        //java在底層對(duì)他做了一些特殊處理。
        //打印對(duì)象不是地址值而是屬性值。
        System.out.println(sb);
    }
}

3.2 鏈?zhǔn)骄幊?/h4>
public class StringBuilderDemo4 {
    public static void main(String[] args) {
        //1.創(chuàng)建對(duì)象
        StringBuilder sb = new StringBuilder();

        //2.添加字符串
        sb.append("aaa").append("bbb").append("ccc").append("ddd");

        System.out.println(sb);//aaabbbcccddd

        //3.再把StringBuilder變回字符串
        String str = sb.toString();
        System.out.println(str);//aaabbbcccddd

    }
}

3.3 練習(xí)1:對(duì)稱字符串

需求:

? 鍵盤接受一個(gè)字符串,程序判斷出該字符串是否是對(duì)稱字符串,并在控制臺(tái)打印是或不是

對(duì)稱字符串:123321、111

非對(duì)稱字符串:123123

代碼示例:

public class StringBuilderDemo6 {
    //使用StringBuilder的場(chǎng)景:
    //1.字符串的拼接
    //2.字符串的反轉(zhuǎn)

    public static void main(String[] args) {
        //1.鍵盤錄入一個(gè)字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)字符串");
        String str = sc.next();

        //2.反轉(zhuǎn)鍵盤錄入的字符串
        String result = new StringBuilder().append(str).reverse().toString();

        //3.比較
        if(str.equals(result)){
            System.out.println("當(dāng)前字符串是對(duì)稱字符串");
        }else{
            System.out.println("當(dāng)前字符串不是對(duì)稱字符串");
        }

    }
}

3.4 練習(xí)2:拼接字符串

需求:定義一個(gè)方法,把 int 數(shù)組中的數(shù)據(jù)按照指定的格式拼接成一個(gè)字符串返回。

? 調(diào)用該方法,并在控制臺(tái)輸出結(jié)果。

? 例如:數(shù)組為int[] arr = {1,2,3};

? 執(zhí)行方法后的輸出結(jié)果為:[1, 2, 3]

代碼示例:

package com.itheima.stringbuilderdemo;

public class StringBuilderDemo7 {
    public static void main(String[] args) {
        //1.定義數(shù)組
        int[] arr = {1,2,3};

        //2.調(diào)用方法把數(shù)組變成字符串
        String str = arrToString(arr);

        System.out.println(str);

    }


    public static String arrToString(int[] arr){
        StringBuilder sb = new StringBuilder();
        sb.append("[");

        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");

        return sb.toString();
    }
}

4. StringJoiner

  • StringJoiner跟StringBuilder一樣,也可以看成是一個(gè)容器,創(chuàng)建之后里面的內(nèi)容是可變的。
  • 作用:提高字符串的操作效率,而且代碼編寫特別簡(jiǎn)潔,但是目前市場(chǎng)上很少有人用。
  • JDK8出現(xiàn)的

基本使用:

//1.創(chuàng)建一個(gè)對(duì)象,并指定中間的間隔符號(hào)
StringJoiner sj = new StringJoiner("---");
//2.添加元素
sj.add("aaa").add("bbb").add("ccc");
//3.打印結(jié)果
System.out.println(sj);//aaa---bbb---ccc
//1.創(chuàng)建對(duì)象
StringJoiner sj = new StringJoiner(", ","[","]");
//2.添加元素
sj.add("aaa").add("bbb").add("ccc");
int len = sj.length();
System.out.println(len);//15
//3.打印
System.out.println(sj);//[aaa, bbb, ccc]
String str = sj.toString();
System.out.println(str);//[aaa, bbb, ccc]

關(guān)于字符串的小擴(kuò)展:

  1. 字符串存儲(chǔ)的內(nèi)存原理

    String s = “abc”;直接賦值

    特點(diǎn):

    ? 此時(shí)字符串a(chǎn)bc是存在字符串常量池中的。

    ? 先檢查字符串常量池中有沒有字符串a(chǎn)bc,如果有,不會(huì)創(chuàng)建新的,而是直接復(fù)用。如果沒有abc,才會(huì)創(chuàng)建一個(gè)新的。

    所以,直接賦值的方式,代碼簡(jiǎn)單,而且節(jié)約內(nèi)存。

  2. new出來的字符串

    看到new關(guān)鍵字,一定是在堆里面開辟了一個(gè)小空間。

    String s1 = new String(“abc”);

    String s2 = “abc”;

    s1記錄的是new出來的,在堆里面的地址值。

    s2是直接賦值的,所以記錄的是字符串常量池中的地址值。

  3. == 號(hào)比較的到底是什么?

    如果比較的是基本數(shù)據(jù)類型:比的是具體的數(shù)值是否相等。

    如果比較的是引用數(shù)據(jù)類型:比的是地址值是否相等。

    結(jié)論:== 只能用于比較基本數(shù)據(jù)類型。不能比較引用數(shù)據(jù)類型。

后記
????????美好的一天,到此結(jié)束,下次繼續(xù)努力!欲知后續(xù),請(qǐng)看下回分解,寫作不易,感謝大家的支持!! ??????
文章來源地址http://www.zghlxwxcb.cn/news/detail-632597.html

到了這里,關(guān)于從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之API、String類(八)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包