【三】Scanner & String

1.Scanner

  • 說明:Scanner類接受鍵盤錄入的字符串
  • 代碼
package com.itheima_01;
import java.util.Scanner;
/*
 * Scanner:用于獲取鍵盤錄入的數(shù)據(jù)奉瘤。(基本數(shù)據(jù)類型煮落,字符串?dāng)?shù)據(jù))
 * public String nextLine():獲取鍵盤錄入的字符串?dāng)?shù)據(jù)
 */
public class ScannerDemo {
    public static void main(String[] args) {
        //創(chuàng)建鍵盤錄入對(duì)象
        Scanner sc = new Scanner(System.in);
        //接收數(shù)據(jù)
        System.out.println("請(qǐng)輸入一個(gè)字符串?dāng)?shù)據(jù):");
        String s = sc.nextLine();
        
        //輸出結(jié)果
        System.out.println("s:"+s);
    }
}

2.String

  • 說明:
    A:"abc"是String類的一個(gè)實(shí)例,或者成為String類的一個(gè)對(duì)象
    B:字符串字面值"abc"也可以看成是一個(gè)字符串對(duì)象
    C:字符串是常量贾铝,一旦被賦值,就不能被改變
    D:字符串本質(zhì)是一個(gè)字符數(shù)組
  • 代碼
    1.構(gòu)造方法:
package com.itheima_02;
/*
 * String:字符串類
 *      由多個(gè)字符組成的一串?dāng)?shù)據(jù)
 *      字符串其本質(zhì)是一個(gè)字符數(shù)組
 * 
 * 構(gòu)造方法:
 *      String(String original):把字符串?dāng)?shù)據(jù)封裝成字符串對(duì)象
 *      String(char[] value):把字符數(shù)組的數(shù)據(jù)封裝成字符串對(duì)象
 *      String(char[] value, int index, int count):把字符數(shù)組中的一部分?jǐn)?shù)據(jù)封裝成字符串對(duì)象
 * 
 * 注意:字符串是一種比較特殊的引用數(shù)據(jù)類型,直接輸出字符串對(duì)象輸出的是該對(duì)象中的數(shù)據(jù)刻恭。
 */
public class StringDemo {
    public static void main(String[] args) {
        //方式1
        //String(String original):把字符串?dāng)?shù)據(jù)封裝成字符串對(duì)象
        String s1 = new String("hello");
        System.out.println("s1:"+s1);
        System.out.println("---------");
        
        //方式2
        //String(char[] value):把字符數(shù)組的數(shù)據(jù)封裝成字符串對(duì)象
        char[] chs = {'h','e','l','l','o'};
        String s2 = new String(chs);
        System.out.println("s2:"+s2);
        System.out.println("---------");
        
        //方式3
        //String(char[] value, int index, int count):把字符數(shù)組中的一部分?jǐn)?shù)據(jù)封裝成字符串對(duì)象
        //String s3 = new String(chs,0,chs.length);
        String s3 = new String(chs,1,3);
        System.out.println("s3:"+s3);
        System.out.println("---------");
        
        //方式4
        String s4 = "hello";
        System.out.println("s4:"+s4);
    }
}   

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

package com.itheima_02;
/*
 * 通過構(gòu)造方法創(chuàng)建的字符串對(duì)象和直接賦值方式創(chuàng)建的字符串對(duì)象有什么區(qū)別呢?
 *      通過構(gòu)造方法創(chuàng)建字符串對(duì)象是在堆內(nèi)存翠订。
 *      直接賦值方式創(chuàng)建對(duì)象是在方法區(qū)的常量池。
 *      
 * ==:
 *      基本數(shù)據(jù)類型:比較的是基本數(shù)據(jù)類型的值是否相同
 *      引用數(shù)據(jù)類型:比較的是引用數(shù)據(jù)類型的地址值是否相同
 */
public class StringDemo2 {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = "hello";
        
        System.out.println("s1:"+s1);
        System.out.println("s2:"+s2);
        
        System.out.println("s1==s2:"+(s1==s2)); //false
        
        String s3 = "hello";
        System.out.println("s1==s3:"+(s1==s3)); //false
        System.out.println("s2==s3:"+(s2==s3)); //true
    }
}

2.String類的判斷功能

package com.itheima_03;
/*
 * Object:是類層次結(jié)構(gòu)中的根類激才,所有的類都直接或者間接的繼承自該類拓型。
 * 如果一個(gè)方法的形式參數(shù)是Object,那么這里我們就可以傳遞它的任意的子類對(duì)象瘸恼。
 * 
 * String類的判斷功能:
 * boolean equals(Object obj):比較字符串的內(nèi)容是否相同
 * boolean equalsIgnoreCase(String str):比較字符串的內(nèi)容是否相同,忽略大小寫
 * boolean startsWith(String str):判斷字符串對(duì)象是否以指定的str開頭
 * boolean endsWith(String str):判斷字符串對(duì)象是否以指定的str結(jié)尾
 */
public class StringDemo {
    public static void main(String[] args) {
        //創(chuàng)建字符串對(duì)象
        String s1 = "hello";
        String s2 = "hello";
        String s3 = "Hello";
        
        //boolean equals(Object obj):比較字符串的內(nèi)容是否相同
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println("-----------");
        
        //boolean equalsIgnoreCase(String str):比較字符串的內(nèi)容是否相同,忽略大小寫
        System.out.println(s1.equalsIgnoreCase(s2));
        System.out.println(s1.equalsIgnoreCase(s3));
        System.out.println("-----------");
        
        //boolean startsWith(String str):判斷字符串對(duì)象是否以指定的str開頭
        System.out.println(s1.startsWith("he"));
        System.out.println(s1.startsWith("ll"));
    }
}

3.String類的獲取功能

package com.itheima_04;
/*
 * String類的獲取功能:
 * int length():獲取字符串的長(zhǎng)度劣挫,其實(shí)也就是字符個(gè)數(shù)
 * char charAt(int index):獲取指定索引處的字符
 * int indexOf(String str):獲取str在字符串對(duì)象中第一次出現(xiàn)的索引
 * String substring(int start):從start開始截取字符串
 * String substring(int start,int end):從start開始,到end結(jié)束截取字符串东帅。包括start压固,不包括end
 */
public class StringDemo {
    public static void main(String[] args) {
        //創(chuàng)建字符串對(duì)象
        String s = "helloworld";
        
        //int length():獲取字符串的長(zhǎng)度,其實(shí)也就是字符個(gè)數(shù)
        System.out.println(s.length());
        System.out.println("--------");
        
        //char charAt(int index):獲取指定索引處的字符
        System.out.println(s.charAt(0));
        System.out.println(s.charAt(1));
        System.out.println("--------");
        
        //int indexOf(String str):獲取str在字符串對(duì)象中第一次出現(xiàn)的索引
        System.out.println(s.indexOf("l"));
        System.out.println(s.indexOf("owo"));
        System.out.println(s.indexOf("ak"));
        System.out.println("--------");
        
        //String substring(int start):從start開始截取字符串
        System.out.println(s.substring(0));
        System.out.println(s.substring(5));
        System.out.println("--------");
        
        //String substring(int start,int end):從start開始靠闭,到end結(jié)束截取字符串
        System.out.println(s.substring(0, s.length()));
        System.out.println(s.substring(3,8));
    }
}

4.String類的轉(zhuǎn)換功能

package com.itheima_05;
/*
 * String類的轉(zhuǎn)換功能:
 * char[] toCharArray():把字符串轉(zhuǎn)換為字符數(shù)組
 * String toLowerCase():把字符串轉(zhuǎn)換為小寫字符串
 * String toUpperCase():把字符串轉(zhuǎn)換為大寫字符串
 * 
 * 字符串的遍歷:
 *      A:length()加上charAt()
 *      B:把字符串轉(zhuǎn)換為字符數(shù)組帐我,然后遍歷數(shù)組
 */
public class StringDemo {
    public static void main(String[] args) {
        //創(chuàng)建字符串對(duì)象
        String s = "abcde";
        
        //char[] toCharArray():把字符串轉(zhuǎn)換為字符數(shù)組
        char[] chs = s.toCharArray();
        for(int x=0; x<chs.length; x++) {
            System.out.println(chs[x]);
        }
        System.out.println("-----------");
        
        //String toLowerCase():把字符串轉(zhuǎn)換為小寫字符串
        System.out.println("HelloWorld".toLowerCase());
        //String toUpperCase():把字符串轉(zhuǎn)換為大寫字符串
        System.out.println("HelloWorld".toUpperCase());
    }
}

5.String類的其它功能

package com.itheima_06;
/*
 * 去除字符串兩端空格    
 *      String trim()
 * 按照指定符號(hào)分割字符串  
 *      String[] split(String str)
 */
public class StringDemo {
    public static void main(String[] args) {
        //創(chuàng)建字符串對(duì)象
        String s1 = "helloworld";
        String s2 = "  helloworld  ";
        String s3 = "  hello  world  ";
        System.out.println("---"+s1+"---");
        System.out.println("---"+s1.trim()+"---");
        System.out.println("---"+s2+"---");
        System.out.println("---"+s2.trim()+"---");
        System.out.println("---"+s3+"---");
        System.out.println("---"+s3.trim()+"---");
        System.out.println("-------------------");
                                                               
        //String[] split(String str)
        //創(chuàng)建字符串對(duì)象
        String s4 = "aa,bb,cc";
        String[] strArray = s4.split(",");
        for(int x=0; x<strArray.length; x++) {
            System.out.println(strArray[x]);
        }
    }
}

3. StringBuilder

  • 說明
    StringBuilder:是一個(gè)可變的字符串,字符串緩沖區(qū)類愧膀。
    String和StringBuilder的區(qū)別:
    String的內(nèi)容是固定的
    StringBuilder的內(nèi)容是可變的
    +=拼接字符串耗費(fèi)內(nèi)存原因:
    每次拼接都會(huì)產(chǎn)生新的字符串對(duì)象,而利用StringBuilder來拼接字符串自始至終用的都是同一個(gè)StringBuilder容器拦键。
  • 代碼
    1.構(gòu)造方法
package com.itheima_01;
/*
 * StringBuilder:是一個(gè)可變的字符串。字符串緩沖區(qū)類檩淋。
 * 
 * String和StringBuilder的區(qū)別:
 *      String的內(nèi)容是固定的芬为。
 *      StringBuilder的內(nèi)容是可變的。
 * 
 * 構(gòu)造方法:
 *      StringBuilder()
 * 
 * 成員方法:
 *      public int capacity():返回當(dāng)前容量
 *      public int length():返回長(zhǎng)度(字符數(shù))
 * 
 *      容量:理論值
 *      長(zhǎng)度:實(shí)際值
 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        //創(chuàng)建對(duì)象
        StringBuilder sb = new StringBuilder();
        System.out.println("sb:"+sb);
        System.out.println("sb.capacity():"+sb.capacity());
        System.out.println("sb.length():"+sb.length());
    }
}   

2.添加功能,反轉(zhuǎn)功能

package com.itheima_02;
/*
 * 添加功能
 *      public StringBuilder append(任意類型):添加數(shù)據(jù)蟀悦,并返回自身對(duì)象
 * 反轉(zhuǎn)功能
 *      public StringBuilder reverse()
 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        //創(chuàng)建對(duì)象
        StringBuilder sb = new StringBuilder();
        
        //public StringBuilder append(任意類型)
        //StringBuilder sb2 = sb.append("hello");
        
        /*
        System.out.println("sb:"+sb);
        System.out.println("sb2:"+sb2);
        System.out.println(sb == sb2); //true
        */
        
        /*
        sb.append("hello");
        sb.append("world");
        sb.append(true);
        sb.append(100);
        */
        
        //鏈?zhǔn)骄幊?        sb.append("hello").append("world").append(true).append(100);
        
        System.out.println("sb:"+sb);
        
        //public StringBuilder reverse()
        sb.reverse();
        System.out.println("sb:"+sb);
        
    }
}

3.StringBuilder和String通過方法完成相互轉(zhuǎn)換

package com.itheima_03;
/*
 * StringBuilder和String的相互轉(zhuǎn)換
 * 
 * StringBuilder -- String
 *      public String toString():通過toString()就可以實(shí)現(xiàn)把StringBuilder轉(zhuǎn)成String
 * 
 * String -- StringBuilder
 *      StringBuilder(String str):通過構(gòu)造方法就可以實(shí)現(xiàn)把String轉(zhuǎn)成StringBuilder
 */
public class StringBuilderTest {
    public static void main(String[] args) {
        //StringBuilder -- String
        /*
        StringBuilder sb = new StringBuilder();
        sb.append("hello").append("world");
        
        String s = sb.toString();
        System.out.println(s);
        */
        
        //String -- StringBuilder
        String s = "helloworld";
        StringBuilder sb = new StringBuilder(s);
        System.out.println(sb);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媚朦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子日戈,更是在濱河造成了極大的恐慌询张,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涎拉,死亡現(xiàn)場(chǎng)離奇詭異瑞侮,居然都是意外死亡的圆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門半火,熙熙樓的掌柜王于貴愁眉苦臉地迎上來越妈,“玉大人,你說我怎么就攤上這事钮糖∶仿樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵店归,是天一觀的道長(zhǎng)阎抒。 經(jīng)常有香客問我,道長(zhǎng)消痛,這世上最難降的妖魔是什么且叁? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮秩伞,結(jié)果婚禮上逞带,老公的妹妹穿的比我還像新娘。我一直安慰自己纱新,他們只是感情好展氓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脸爱,像睡著了一般遇汞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上簿废,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天空入,我揣著相機(jī)與錄音,去河邊找鬼族檬。 笑死执庐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的导梆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼迂烁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼看尼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盟步,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤藏斩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后却盘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狰域,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡媳拴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兆览。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屈溉。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抬探,靈堂內(nèi)的尸體忽然破棺而出子巾,到底是詐尸還是另有隱情,我是刑警寧澤小压,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布线梗,位于F島的核電站,受9級(jí)特大地震影響怠益,放射性物質(zhì)發(fā)生泄漏仪搔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一蜻牢、第九天 我趴在偏房一處隱蔽的房頂上張望烤咧。 院中可真熱鬧,春花似錦孩饼、人聲如沸髓削。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)立膛。三九已至,卻和暖如春梯码,著一層夾襖步出監(jiān)牢的瞬間宝泵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工轩娶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儿奶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓鳄抒,卻偏偏與公主長(zhǎng)得像闯捎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子许溅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • String 的聲明 由 JDK 中關(guān)于String的聲明可以知道: 不同字符串可能共享同一個(gè)底層char數(shù)組瓤鼻,例...
    CodeKing2017閱讀 1,638評(píng)論 1 2
  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面茬祷,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語言并蝗,java語言祭犯,單片機(jī)的匯編語言等秸妥;大學(xué)畢...
    oceanfive閱讀 3,087評(píng)論 0 7
  • 從網(wǎng)上復(fù)制的,看別人的比較全面沃粗,自己搬過來粥惧,方便以后查找。原鏈接:https://www.cnblogs.com/...
    lxtyp閱讀 1,346評(píng)論 0 9
  • 七月開篇陪每,7月1號(hào)那天影晓,突然內(nèi)心戰(zhàn)戰(zhàn)兢兢,忽然覺得非常的惶恐檩禾。 看著從二月的嫩黃的春樹挂签,和二月的小草, 僅僅過了半...
    水之韻味閱讀 170評(píng)論 0 2
  • 該模式是與具體的項(xiàng)目業(yè)務(wù)無關(guān)的設(shè)計(jì)模式單例模式盼产,是一種常用的軟件設(shè)計(jì)模式饵婆。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特...
    我弟是個(gè)程序員閱讀 307評(píng)論 0 0