在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Java使用類-String

    Java使用類-String

    1、String

    1.1 String 實(shí)例化

    String str1 = “xxx”;

    String string1 = “hello KH96”;System.out.println(string1); //hello KH96

    String str1 = new String(“xxx”);

    String string2 = “hello KH96”;System.out.println(string2); //hello KH96

    String底層實(shí)現(xiàn) private final char value[];

    String底層是由 私有final 的數(shù)組實(shí)現(xiàn)的,對(duì)外沒有提供修改的方法,字符串多次賦值,不是修改字符串的內(nèi)容,而是 改變字符串的引用地址 ;

    源碼

    1.2 String常用方法

    方法

    說明

    length()

    字符串的長(zhǎng)度

    equals()

    比較的是字符串的內(nèi)容

    equalsIgnoreCase(String str)

    忽略大小比較

    toUpperCase()

    轉(zhuǎn)大寫

    toLowerCase()

    轉(zhuǎn)小寫

    concat(String str)

    返回拼接后的字符串

    length()

    字符串的長(zhǎng)度:length()方法,返回的是字符串的長(zhǎng)度,即字符串的長(zhǎng)度(不是字節(jié)數(shù)),區(qū)別去數(shù)組的length

    String string1 = “hello KH96”;System.out.println(string1+”的長(zhǎng)度:”+string1.length()); //hello KH96的長(zhǎng)度:10

    equals()

    重寫了Object類的equals方法,比較的是字符串的內(nèi)容,不是對(duì)象

    String string2 = “KH96”;String string3 = “KH97”;System.out.println(string2.equals(string3)); //false

    equalsIgnoreCase(String str)

    忽略大小比較

    String string7 = “kh96”;String string8 = “KH96”;System.out.println(“不忽略大小寫比較:”+string7.equals(string8)); //falseSystem.out.println(“忽略大小寫比:”+string7.equalsIgnoreCase(string8)); //true

    toUpperCase() 轉(zhuǎn)大寫 toLowerCase() 轉(zhuǎn)小寫

    String string9 = “abCD”;System.out.println(string9.toUpperCase()); //ABCDSystem.out.println(string9.toLowerCase());//abcd

    concat(String str) 返回拼接后的字符串

    “+”號(hào)也可以進(jìn)行字符串拼接

    concat(String str)

    拼接字符串都創(chuàng)建了新的對(duì)象,在循環(huán)中盡量不要拼接字符串,會(huì)造成棧溢出;

    String strig10 = “abc”;System.out.println(strig10.concat(“bcd”).concat(“def”));//abcbcddef

    1.3 String 字符查找/提取相關(guān)方法

    方法

    說明

    indexOf(String str)

    返回str首次出現(xiàn)的下標(biāo)

    lastIndexOf(String str)

    返回str最后一次出現(xiàn)的下標(biāo)

    substring(int index1)

    截取下標(biāo)index1,及以后的所有字符

    substring(int index1,int index2)

    截取下標(biāo)index1到index2之間的字符串,包括index1, 不包括 index2

    trim()

    去除字符串的 首尾 空格

    startsWith(String str)

    是否以str開頭

    endsWith(String str)

    是否以str結(jié)尾

    contains(String str)

    是否包含str

    split(String str)

    根據(jù)指定分割字符,將字符串拆分成字符串?dāng)?shù)組返回

    toCharArray()

    將字符串轉(zhuǎn)為字符數(shù)組

    replace(String str1,String str2)

    用 str2 替換 str1

    getBytes()

    字符串轉(zhuǎn)換為字節(jié)數(shù)組

    getBytes(“UTF-8”)

    字符串轉(zhuǎn)換為字節(jié)數(shù)組,可指定編碼

    new String(byte[] bytes)

    將字節(jié)數(shù)組轉(zhuǎn)換為字符串

    indexOf(String str)

    返回str首次出現(xiàn)的下標(biāo),沒有查到就返回-1

    String string11 = “I am a good student in kh96”;System.out.println(“good首次出現(xiàn)的位置:”+string11.indexOf(“good”)); //7

    還可以通過ascii碼值查詢

    String string11 = “I am a good student in kh96”;char char1 = 97;System.out.println(char1); //aSystem.out.println(“參數(shù)支持int assic碼值:”+string11.indexOf(97)); //2

    lastIndexOf(String str)

    返回str最后一次出現(xiàn)的下標(biāo),沒有就返回-1

    String string11 = “I am a good student in kh96”;System.out.println(string11);System.out.println(“t最后一次出現(xiàn)的下標(biāo):”+string11.lastIndexOf(“t”)); //18

    substring(int index1)

    截取下標(biāo)index1,及以后的所有字符

    index的范圍[0,string.length()]

    String string12 = “abcdefghijklmn”;System.out.println(string12.substring(5)); //fghijklmn

    substring(int index1,int index2)

    截取下標(biāo)index1到index2之間的字符串,包括index1, 不包括 index2

    index的范圍[0,string.length()]

    String string12 = “abcdefghijklmn”;System.out.println(string12.substring(5,8)); //fgh

    小應(yīng)用

    String string14 = “KH90,KH91,KH92,KH93,KH94,KH95,”;System.out.println(string14.substring(0,string14.lastIndexOf(“,”)));//KH90,KH91,KH92,KH93,KH94,KH95

    trim()

    去除字符串的 首尾 空格

    String string13 = ” KH 96 “;System.out.println(“原始長(zhǎng)度”+string13.length()); //10System.out.println(“取出空格后長(zhǎng)度”+string13.trim().length()); //6 “KH 96”

    startsWith(String str) endsWith(String str)

    startsWith(String str) 是否以str開頭

    endsWith(String str) 是否以str結(jié)尾

    String string15 = “KH96.mp3”;System.out.println(“是否是KH開頭?”+ string15.startsWith(“KH”)); //trueSystem.out.println(“是否是.mp3結(jié)尾?”+ string15.endsWith(“.mp3”)); //true

    contains(String str)

    判斷字符串是否包含str

    String string16 = “aaa bbb cc ddd”;System.out.println(“是否包含bbb:”+ string16.contains(“bbb”)); //trueSystem.out.println(“是否包含eee:”+ string16.contains(“eee”)); //false

    split(String str)

    根據(jù)指定分割字符,將字符串拆分成字符串?dāng)?shù)組返回

    String string17_1 = “13501020304;15801020304;18901020304”;String[] phoneNumbers1 = string17_1.split(“;”); //一種字符分割System.out.println(“手機(jī)號(hào)數(shù)組內(nèi)容:”+ Arrays.toString(phoneNumbers2));String string17_2 = “13501020304;15801020304!18901020304”;String[] phoneNumbers2 = string17_2.split(“;|!”); //多種字符分割 用 | 隔開System.out.println(“手機(jī)號(hào)數(shù)組內(nèi)容:”+ Arrays.toString(phoneNumbers2));//[13501020304, 15801020304, 18901020304]

    toCharArray()

    將字符串轉(zhuǎn)為字符數(shù)組

    char[] chars1 = string18.toCharArray();System.out.println(Arrays.toString(chars1)); //[K, H, 9, 8, 正, 在, 學(xué), 習(xí), 實(shí), 用, 類]

    replace(String str1,String str2)

    用 str2 替換 str1

    //獲取一個(gè)16位的隨機(jī)字符串 String string19 = UUID.randomUUID().toString();System.out.println(string19); //65c0844a-c437-4a65-89ca-84d4166325ff//轉(zhuǎn)換字符串,將-轉(zhuǎn)換為*System.out.println(string19.replace(“-“,”*”));//65c0844a*c437*4a65*89ca*84d4166325ff//去除字符串,將所有的-去除System.out.println(string19.replace(“-“,””));//65c0844ac4374a6589ca84d4166325ff//去16位隨機(jī)數(shù)System.out.println(string19.replace(“-“,””).substring(0,16));//65c0844ac4374a65

    getBytes() getBytes(“UTF-8”)

    字符串轉(zhuǎn)換為字節(jié)數(shù)組

    String string20 = “abcd”;//getBytes() 沒有指定編碼byte[] bytes = string20.getBytes(); try { //getBytes(“UTF-8”) 指定編碼 byte[] bytes2 = string20.getBytes(“UTF-8”); System.out.println(Arrays.toString(bytes2)); //[97, 98, 99, 100]} catch (UnsupportedEncodingException e) { e.printStackTrace();}System.out.println(Arrays.toString(bytes)); //Arrays.toString(bytes)

    new String(byte[] bytes)

    將字節(jié)數(shù)組轉(zhuǎn)換為字符串

    byte[] bytes3 ={100,101,102}; //ascii碼值System.out.println(new String(bytes3)); //def//配合上面getBytes進(jìn)行轉(zhuǎn)碼try { System.out.println(new String(bytes3,”utf-8″)); //可以指定編碼 def} catch (UnsupportedEncodingException e) { e.printStackTrace();}char[] chars3 = {‘K’,’H’,’9′,’6′};System.out.println(new String(chars3));//KH96

    2、StringBuffer

    可變字符串類:StringBuffer

    不同于String類:可以實(shí)現(xiàn)動(dòng)態(tài)拼接字符串,而不會(huì)創(chuàng)建新的對(duì)象;

    即:是一個(gè)可變字符串的對(duì)象,改變的是字符串對(duì)象中的內(nèi)容;

    不可以直接賦值,必須通過new創(chuàng)建對(duì)象;

    2.1 StringBuffer實(shí)例化

    new StringBuffer()

    默認(rèn)初始容量 16

    StringBuffer sbf1 = new StringBuffer();System.out.println(“默認(rèn)初始容量:”+sbf1.capacity());//16

    底層實(shí)現(xiàn)

    //StringBuffer()public StringBuffer() { super(16); //初始容量16 }//AbstractStringBuilder(int capacity)AbstractStringBuilder(int capacity) { value = new char[capacity];}

    new StringBuffer(int capacity)

    指定初始容量

    StringBuffer sbf2 = new StringBuffer(32);System.out.println(“只定始容量:”+sbf2.capacity()); //32

    底層實(shí)現(xiàn)

    public StringBuffer(int capacity) {super(capacity); //指定初始容量}

    StringBuffer(String str)

    指定初始字符串,容量為字符串長(zhǎng)度+16

    StringBuffer sbf3 = new StringBuffer(“Kh96”);System.out.println(“指定初始字符串初始容量:”+sbf3.capacity()); //20

    底層實(shí)現(xiàn)

    public StringBuffer(String str) { super(str.length() + 16); //容量為字符串長(zhǎng)度+16 append(str);}

    2.2 StringBuffer常用方法

    append(String str)

    拼接字符串

    StringBuffer sbf4 = new StringBuffer(“userId=”);sbf4.append(“U0001”) .append(“,userName=”) .append(“張三,age=”) .append(“18”); //userId=U0001,userName=張三,age=18

    擴(kuò)容機(jī)制

    底層擴(kuò)容,當(dāng)拼接一個(gè)新的字符串,字符串?dāng)?shù)組長(zhǎng)度不夠,會(huì)進(jìn)行動(dòng)態(tài)擴(kuò)容,

    每次擴(kuò)容都是前一個(gè)數(shù)組長(zhǎng)度的2倍+2

    最大擴(kuò)容長(zhǎng)度不能超過Integer的最大值 – 8;

    void expandCapacity(int minimumCapacity) { int newCapacity = value.length * 2 + 2; //每次擴(kuò)容都是前一個(gè)數(shù)組長(zhǎng)度的2倍+2 if (newCapacity – minimumCapacity < 0) newCapacity = minimumCapacity; if (newCapacity < 0) { if (minimumCapacity < 0) // overflow throw new OutOfMemoryError(); newCapacity = Integer.MAX_VALUE; } value = Arrays.copyOf(value, newCapacity);}

    toString()

    獲取動(dòng)態(tài)字符串內(nèi)容

    StringBuffer sbf4 = new StringBuffer(“userId=”);sbf4.append(“U0001”) .append(“,userName=”) .append(“張三,age=”) .append(“18”);String userInfo = sbf4.toString(); System.out.println(userInfo); //userId=U0001,userName=張三,age=18

    3、StringBuilder

    用法和StringBuffer沒有區(qū)別,唯一的區(qū)別就是StringBuffer是 線程安全的 ,StringBuilder是 非線程安全的 ;

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月20日 13:07
    下一篇 2022年6月20日 13:07

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息