Java 基礎 28 String類

1.1 String類概述

??通過JDK提供的API蹬屹,查看String類的說明

  • "abc"是String類的一個實例,或者成為String類的一個對象
  • 字符串字面值"abc"也可以看成是一個字符串對象
  • 字符串是常量匿级,一旦被賦值空镜,就不能被改變
  • 字符串本質是一個字符數(shù)組

1.2 String類的構造方法

  • String(String original):

    • 把字符串數(shù)據(jù)封裝成字符串對象
  • String(char[] value):

    • 把字符數(shù)組的數(shù)據(jù)封裝成字符串對象
  • String(char[] value, int index, int count):

    • 把字符數(shù)組的一部分數(shù)據(jù)封裝成字符串對象

1.2.1 常用構造方法演示

package com.itheima_01;
/*
 * String:代表字符串類。
 *      由多個字符組成的一串數(shù)據(jù)咳焚。
 *      字符串的本質就是一個字符數(shù)組洽损。     
 * 
 * 構造方法:
 *      String(String original):把字符串數(shù)據(jù)封裝成字符串對象
 *      String(char[] value):把字符數(shù)組的數(shù)據(jù)封裝成字符串對象
 *      String(char[] value, int index, int count):把字符數(shù)組的一部分數(shù)據(jù)封裝成字符串對象
 * 
 * public String toString():返回此對象本身(它已經(jīng)是一個字符串!)革半。 
 */
public class StringDemo {
    public static void main(String[] args) {
        //String(String original):把字符串數(shù)據(jù)封裝成字符串對象
        String s1 = new String("hello");
        System.out.println(s1);
        System.out.println("----------");
        
        //String(char[] value):把字符數(shù)組的數(shù)據(jù)封裝成字符串對象
        char[] value = {'h','e','l','l','o'};
        String s2 = new String(value);
        System.out.println(s2);
        System.out.println("----------");
        
        //String(char[] value, int index, int count):把字符數(shù)組的一部分數(shù)據(jù)封裝成字符串對象
        //String s3 = new String(value,0,value.length);
        String s3 = new String(value,0,3);
        System.out.println(s3);
        System.out.println("----------");
        
        //最常用的
        String s4 = "hello";
        System.out.println(s4);
    }
}

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

String01.png
package com.itheima_02;
/*
 * String類創(chuàng)建對象的特點:
 *      A:通過構造方法創(chuàng)建對象
 *      B:通過直接賦值的方式創(chuàng)建對象
 * 這兩種方式的創(chuàng)建是有區(qū)別的碑定。
 * 通過構造方法創(chuàng)建的字符串對象是在堆內存。
 * 通過直接賦值的方式創(chuàng)建的字符串對象是在方法區(qū)的常量池又官。
 */
public class StringDemo {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        
        String s3 = "hello";
        String s4 = "hello";
        
        System.out.println(s1 == s2);//false
        System.out.println(s1 == s3);//false
        System.out.println(s3 == s4);//true
    }
}

1.3String 的練習之模擬用戶登錄

  • boolean equals(Object obj):
    • 比較字符串的內容是否相同
  • boolean equalsIgnoreCase(String str):
    • 比較字符串的內容是否相同,忽略大小寫

1.3.1 模擬用戶登錄演示

??需求:模擬登錄,給三次機會,并提示還有幾次

1.3.1.1案例代碼

package com.itheima_03;

import java.util.Scanner;

/*
 * 需求:模擬登錄,給三次機會,并提示還有幾次
 * 分析:
 *      A:定義兩個字符串對象延刘,用于存儲已經(jīng)存在的用戶名和密碼
 *      B:鍵盤錄入用戶名和密碼
 *      C:拿鍵盤錄入的用戶名和密碼去跟已經(jīng)存在的用戶名和密碼進行比較
 *          如果內容相同,就提示登錄成功
 *          如果內容不同六敬,就提示登錄失敗碘赖,并提示還有幾次機會
 * public boolean equals(Object anObject):比較字符串的內容,嚴格區(qū)分大小寫(用戶名和密碼)
 * public boolean equalsIgnoreCase(String anotherString):比較字符串的內容外构,不考慮大小寫(驗證碼)
 */
public class StringTest {
    public static void main(String[] args) {
        //定義兩個字符串對象普泡,用于存儲已經(jīng)存在的用戶名和密碼
        String username = "admin";
        String password = "admin";
        
        for(int x=0; x<3; x++) {
            //鍵盤錄入用戶名和密碼
            Scanner sc = new Scanner(System.in);
            System.out.println("請輸入用戶名:");
            String name = sc.nextLine();
            System.out.println("請輸入密碼:");
            String pwd = sc.nextLine();
            
            //拿鍵盤錄入的用戶名和密碼去跟已經(jīng)存在的用戶名和密碼進行比較
            if(username.equals(name) && password.equals(pwd)) {
                System.out.println("登錄成功");
                break;
            }else {
                if((2-x) == 0){
                    System.out.println("你的帳號被鎖定,請與管理員聯(lián)系");
                }else {
                    System.out.println("登錄失敗典勇,你還有"+(2-x)+"次機會");
                }
            }
        }
    }
}

1.4 String類的獲取功能

  • public char charAt(int index):返回指定索引處的值
  • public int length():返回字符串中的字符個數(shù),字符串的長度

1.4.1 遍歷字符串的演示

package com.itheima_03;
/*
 * 需求:遍歷字符串(獲取字符串中的每一個字符)
 */
public class StringTest2 {
    public static void main(String[] args) {
        //要遍歷字符串叮趴,你首先得有一個字符串
        String s = "abcde";
        
        //思考:如何獲取字符串中的每一個字符
        //假如讓我們來提供方法割笙,我們應該提供一個根據(jù)索引返回指定位置的字符的方法
        //返回值:char
        //形式參數(shù):int index
        //public char charAt(int index):返回指定索引處的值
        //原始做法
        System.out.println(s.charAt(0));
        System.out.println(s.charAt(1));
        System.out.println(s.charAt(2));
        System.out.println(s.charAt(3));
        System.out.println(s.charAt(4));
        System.out.println("-------------------");
        
        //用for循環(huán)改進
        for(int x=0; x<5; x++) {
            System.out.println(s.charAt(x));
        }
        System.out.println("-------------------");
        
        //目前for循環(huán)中的數(shù)據(jù)5是我們數(shù)出來的,那么字符串有沒有提供一個方法眯亦,用于獲取字符串中字符的個數(shù)呢?
        //public int length():返回字符串中的字符個數(shù)伤溉,字符串的長度
        for(int x=0; x<s.length(); x++) {
            System.out.println(s.charAt(x));
        }
    }
}

1.5對字符串的拼接案例

package com.itheima_03;
/*
 * 需求:把數(shù)組中的數(shù)據(jù)按照指定個格式拼接成一個字符串
 * 舉例:int[] arr = {1,2,3};
 * 輸出結果:[1, 2, 3]
 * 
 * 分析:
 *      A:定義一個int類型的數(shù)組
 *      B:寫方法實現(xiàn)把數(shù)組中的元素按照指定的格式拼接成一個字符串
 *      C:調用方法
 *      D:輸出結果
 */
public class StringTest3 {
    public static void main(String[] args) {
        //定義一個int類型的數(shù)組
        int[] arr = {1,2,3};
        
        //寫方法實現(xiàn)把數(shù)組中的元素按照指定的格式拼接成一個字符串
        
        //調用方法
        String result = arrayToString(arr);
        
        //輸出結果
        System.out.println("result:"+result);
    }
    
    /*
     * 兩個明確:
     *      返回值類型:String
     *      參數(shù)列表:int[] arr
     */
    public static String arrayToString(int[] arr) {
        String s = "";
        //[1, 2, 3]
        s+="[";
        
        for(int x=0; x<arr.length; x++) {
            if(x==arr.length-1) {
                s += arr[x];
            }else {
                s += arr[x];
                s += ", ";
            }
        }
        
        s+="]";
        return s;
    }
}

1.6 String 類的反轉案例

package com.itheima_03;

import java.util.Scanner;

/*
 * 需求:字符串反轉
 * 舉例:鍵盤錄入”abc”     
 * 輸出結果:”cba”
 * 
 * 分析:
 *      A:鍵盤錄入字符串數(shù)據(jù)
 *      B:寫方法實現(xiàn)字符串數(shù)據(jù)的反轉
 *          把字符串倒著遍歷,在把每一個得到的字符拼接成一個字符串
 *      C:調用方法
 *      D:輸出結果
 */
public class StringTest4 {
    public static void main(String[] args) {
        //鍵盤錄入字符串數(shù)據(jù)
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個字符串:");
        String s = sc.nextLine();
        
        //寫方法實現(xiàn)字符串數(shù)據(jù)的反轉
        
        //調用方法
        String result = reverse(s);
        
        //輸出結果
        System.out.println("result:"+result);
    }
    
    /*
     * 兩個明確:
     *      返回值類型:String
     *      參數(shù)列表:String s
     */
    public static String reverse(String s) {
        //把字符串倒著遍歷妻率,在把每一個得到的字符拼接成一個字符串
        String ss = "";
        
        for(int x=s.length()-1; x>=0; x--) {
            ss += s.charAt(x);
        }
        
        return ss;
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末乱顾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宫静,更是在濱河造成了極大的恐慌走净,老刑警劉巖券时,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伏伯,居然都是意外死亡橘洞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門说搅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炸枣,“玉大人,你說我怎么就攤上這事弄唧∈食Γ” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵候引,是天一觀的道長侯养。 經(jīng)常有香客問我,道長背伴,這世上最難降的妖魔是什么沸毁? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮傻寂,結果婚禮上息尺,老公的妹妹穿的比我還像新娘。我一直安慰自己疾掰,他們只是感情好搂誉,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著静檬,像睡著了一般炭懊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拂檩,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天侮腹,我揣著相機與錄音,去河邊找鬼稻励。 笑死父阻,一個胖子當著我的面吹牛,可吹牛的內容都是我干的望抽。 我是一名探鬼主播加矛,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼煤篙!你這毒婦竟也來了斟览?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤辑奈,失蹤者是張志新(化名)和其女友劉穎苛茂,沒想到半個月后已烤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡味悄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年草戈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侍瑟。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡唐片,死狀恐怖,靈堂內的尸體忽然破棺而出涨颜,到底是詐尸還是另有隱情费韭,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布庭瑰,位于F島的核電站星持,受9級特大地震影響,放射性物質發(fā)生泄漏弹灭。R本人自食惡果不足惜督暂,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望穷吮。 院中可真熱鬧逻翁,春花似錦、人聲如沸捡鱼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驾诈。三九已至缠诅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乍迄,已是汗流浹背管引。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闯两,地道東北人褥伴。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像生蚁,于是被迫代替她去往敵國和親噩翠。 傳聞我的和親對象是個殘疾皇子戏自,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法邦投,類相關的語法,內部類的語法擅笔,繼承相關的語法志衣,異常的語法屯援,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,590評論 4 12
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,788評論 1 10
  • 姓名:鐘悅華 公司:佳音英語 【日精進打卡第一百零五天】 【知~】 《六項精進》1遍 《大學》1遍 《弟子規(guī)》0遍...
    Sarah鐘閱讀 142評論 0 0
  • 作業(yè)二 每日一播 1.為爸爸媽媽存了五元念脯,希望爸爸媽媽衣食無憂狞洋,財富豐足。 2.為患乳腺病的朋友捐款十元绿店,希望她籌...
    星光2017閱讀 174評論 0 2