欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java-String類最全匯總(下篇)

 更新時(shí)間:2023年01月15日 16:06:30   作者:曉星航  
這篇文章主要介紹了Java-String類最全匯總(下篇),本文章內(nèi)容詳細(xì),本模塊分為了兩部分,本次為下篇,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

字符, 字節(jié)與字符串

字符與字符串

字符串內(nèi)部包含一個(gè)字符數(shù)組,String 可以和 char[] 相互轉(zhuǎn)換.

字符數(shù)組變?yōu)樽址?/h4>
    public static void main(String[] args) {
        char[] val = {'a','b','c','d','e'};
        String str = new String(val);
        System.out.println(str);
    }

指定字符數(shù)組變?yōu)樽址?/h4>
   public static void main(String[] args) {
        char[] val = {'a','b','c','d','e'};
        String str = new String(val,1,3);//第一個(gè)參數(shù)是開(kāi)始變得字符下標(biāo)  第二個(gè)參數(shù)是要變的字符個(gè)數(shù)
        System.out.println(str);
    }

獲取指定位置的字符:

    public static void main(String[] args) {
        String str = "hello" ;
        System.out.println(str.charAt(0)); // 下標(biāo)從 0 開(kāi)始
    }

public static void main(String[] args) {
    String str = "hello" ;
    System.out.println(str.charAt(10));
}

將字符串變?yōu)樽址麛?shù)組:

public static void main(String[] args) {
    String str = "helloworld" ;
    char[] chars =str.toCharArray();//把str指向的字符串對(duì)象變?yōu)樽址麛?shù)組
    System.out.println(Arrays.toString(chars));
}

代碼示例: 給定字符串一個(gè)字符串, 判斷其是否全部由數(shù)字所組成.

思路: 將字符串變?yōu)樽址麛?shù)組而后判斷每一位字符是否是" 0 “~”‘9’"之間的內(nèi)容,如果是則為數(shù)字.

public static boolean isNumber(String str) {
    char[] array = str.toCharArray();
    for (int i = 0; i < array.length; i++) {
        if (array[i] < '0' || array[i] > '9') {
            return false;
        }
    }
    return true;
}
public static void main(String[] args) {
    String str = "12a34567";
    System.out.println(isNumber(str));
}

字節(jié)與字符串

字節(jié)常用于數(shù)據(jù)傳輸以及編碼轉(zhuǎn)換的處理之中,String 也能方便的和 byte[] 相互轉(zhuǎn)換.

將字節(jié)數(shù)組變?yōu)樽址?/h4>
public static void main(String[] args) {
    byte[] bytes = {97,98,99,100};
    String str = new String(bytes);
    System.out.println(str);
}

將部分字節(jié)數(shù)組中的內(nèi)容變?yōu)樽址?/h4>
public static void main(String[] args) {
    byte[] bytes = {97,98,99,100,101,102};
    String str = new String(bytes,1,4);//第一個(gè)參數(shù)是開(kāi)始變得字符下標(biāo)  第二個(gè)參數(shù)是要變的字符個(gè)數(shù)
    System.out.println(str);
}

將字符串以字節(jié)數(shù)組的形式返回:

public static void main(String[] args) {
    String str = "abcd";
    byte[] bytes = str.getBytes();
    System.out.println(Arrays.toString(bytes));
}

編碼轉(zhuǎn)換處理:

public static void main(String[] args) throws UnsupportedEncodingException {
    String str = "abcd";
    byte[] bytes = str.getBytes("GBK");
    System.out.println(Arrays.toString(bytes));
}

小結(jié)

那么何時(shí)使用 byte[], 何時(shí)使用 char[] 呢?

  • byte[] 是把 String 按照一個(gè)字節(jié)一個(gè)字節(jié)的方式處理, 這種適合在網(wǎng)絡(luò)傳輸, 數(shù)據(jù)存儲(chǔ)這樣的場(chǎng)景下使用. 更適合針對(duì)二進(jìn)制數(shù)據(jù)來(lái)操作.
  • char[] 是吧 String 按照一個(gè)字符一個(gè)字符的方式處理, 更適合針對(duì)文本數(shù)據(jù)來(lái)操作, 尤其是包含中文的時(shí)候.

回憶概念: 文本數(shù)據(jù) vs 二進(jìn)制數(shù)據(jù)

一個(gè)簡(jiǎn)單粗暴的區(qū)分方式就是用記事本打開(kāi)能不能看懂里面的內(nèi)容.

如果看的懂, 就是文本數(shù)據(jù)(例如 .java 文件), 如果看不懂, 就是二進(jìn)制數(shù)據(jù)(例如 .class 文件).

字符串常見(jiàn)操作

字符串比較

上面使用過(guò)String類提供的equals()方法,該方法本身是可以進(jìn)行區(qū)分大小寫的相等判斷

。除了這個(gè)方法之外,String類還提供有如下的比較操作:

代碼示例: 不區(qū)分大小寫比較

String str1 = "hello" ;
String str2 = "Hello" ;
System.out.println(str1.equals(str2)); // false 
System.out.println(str1.equalsIgnoreCase(str2)); // true 

注意:equalsIgnoreCase是忽略大小寫的意思。

在String類中compareTo()方法是一個(gè)非常重要的方法,該方法返回一個(gè)整型,該數(shù)據(jù)會(huì)根據(jù)大小關(guān)系返回三類內(nèi)容:

  1. 相等:返回 0.
  2. 小于:返回內(nèi)容小于 0.
  3. 大于:返回內(nèi)容大于 0。

范例:觀察compareTo()比較

System.out.println("A".compareTo("a")); // -32 
System.out.println("a".compareTo("A")); // 32 
System.out.println("A".compareTo("A")); // 0 
System.out.println("AB".compareTo("AC")); // -1 
System.out.println("劉".compareTo("楊"));

compareTo()是一個(gè)可以區(qū)分大小關(guān)系的方法,是String方法里是一個(gè)非常重要的方法。這里的返回值就是前面字符對(duì)應(yīng)的數(shù)值減去后面的字符所對(duì)應(yīng)的數(shù)值。

字符串的比較大小規(guī)則, 總結(jié)成三個(gè)字 “字典序” 相當(dāng)于判定兩個(gè)字符串在一本詞典的前面還是后面. 先比較第一個(gè)字符的大小(根據(jù) unicode 的值來(lái)判定), 如果不分勝負(fù), 就依次比較后面的內(nèi)容

字符串查找

從一個(gè)完整的字符串之中可以判斷指定內(nèi)容是否存在,對(duì)于查找方法有如下定義:

代碼示例: 字符串查找,最好用最方便的就是contains() ——(類似于C語(yǔ)言的strstr)

String str = "helloworld" ; 
System.out.println(str.contains("world")); // true 

該判斷形式是從JDK1.5之后開(kāi)始追加的,在JDK1.5以前要想實(shí)現(xiàn)與之類似的功能,就必須借助、indexOf()方法完成。

代碼示例: 使用indexOf()方法進(jìn)行位置查找(找到之后返回我們查找元素的第一個(gè)位置)

String str = "helloworld" ;
System.out.println(str.indexOf("world")); // 5,w開(kāi)始的索引
System.out.println(str.indexOf("bit")); // -1,沒(méi)有查到
if (str.indexOf("hello") != -1) {
    System.out.println("可以查到指定字符串!");
}

現(xiàn)在基本都是用contains()方法完成。

使用indexOf()需要注意的是,如果內(nèi)容重復(fù),它只能返回查找的第一個(gè)位置

代碼示例: 使用indexOf()的注意點(diǎn)

String str = "helloworld" ;
System.out.println(str.indexOf("l")); // 2 
System.out.println(str.indexOf("l",5)); // 8 
System.out.println(str.lastIndexOf("l")); // 8

在進(jìn)行查找的時(shí)候往往會(huì)判斷開(kāi)頭或結(jié)尾。

代碼示例: 判斷開(kāi)頭或結(jié)尾

String str = "**@@helloworld!!" ;
System.out.println(str.startsWith("**")); // true 
System.out.println(str.startsWith("@@",2)); // ture 
System.out.println(str.endsWith("!!")); // true

字符串替換

使用一個(gè)指定的新的字符串替換掉已有的字符串?dāng)?shù)據(jù),可用的方法如下:

代碼示例: 字符串的替換處理

String str = "helloworld" ;
System.out.println(str.replaceAll("l", "_"));
System.out.println(str.replaceFirst("l", "_"));

注意事項(xiàng): 由于字符串是不可變對(duì)象 , 替換不修改當(dāng)前字符串, 而是產(chǎn)生一個(gè)新的字符串.

字符串拆分

可以將一個(gè)完整的字符串按照指定的分隔符劃分為若干個(gè)子字符串。

可用方法如下:

代碼示例: 實(shí)現(xiàn)字符串的拆分處理

String str = "hello world hello bit" ;
String[] result = str.split(" ") ; // 按照空格拆分
for(String s: result) {
    System.out.println(s);
}

代碼示例: 字符串的部分拆分

String str = "hello world hello bit" ;
String[] result = str.split(" ",2) ;
for(String s: result) {
    System.out.println(s);
}

拆分是特別常用的操作. 一定要重點(diǎn)掌握. 另外有些特殊字符作為分割符可能無(wú)法正確切分, 需要加上轉(zhuǎn)義.

代碼示例: 拆分IP地址

String str = "192.168.1.1" ;
String[] result = str.split("\\.") ;
for(String s: result) {
    System.out.println(s);
}

? 注意事項(xiàng):

  1. 字符"|“,”*“,”+“,”.“都得加上轉(zhuǎn)義字符,前面加上”"
  2. .而如果是"“,那么就得寫成”\\".(\等于一個(gè),而\本身又需要一個(gè)\來(lái)進(jìn)行轉(zhuǎn)義)
  3. 如果一個(gè)字符串中有多個(gè)分隔符,可以用"|"作為連字符.代碼示例: 多次拆分

代碼示例: 多次拆分

String str = "name=zhangsan&age=18" ;
String[] result = str.split("&") ;
for (int i = 0; i < result.length; i++) {
    String[] temp = result[i].split("=") ;
    System.out.println(temp[0]+" = "+temp[1]);
}

這種代碼在以后的開(kāi)發(fā)之中會(huì)經(jīng)常出現(xiàn)

字符串截取

從一個(gè)完整的字符串之中截取出部分內(nèi)容。可用方法如下:

代碼示例: 觀察字符串截取

String str = "helloworld" ;
System.out.println(str.substring(5));//從第5個(gè)字符位置的位置開(kāi)始截取到結(jié)尾
System.out.println(str.substring(0, 5));//從0位置開(kāi)始截取到第5位置的元素

注意事項(xiàng):

  1. 索引從0開(kāi)始
  2. 注意前閉后開(kāi)區(qū)間(左閉右開(kāi))的寫法, substring(0, 5) 表示包含 0 號(hào)下標(biāo)的字符, 不包含 5 號(hào)下標(biāo),所以下圖不包含’w’字符

其他操作方法

代碼示例: 觀察trim()方法的使用

String str = " hello world " ;
System.out.println("["+str+"]");
System.out.println("["+str.trim()+"]");

trim 會(huì)去掉字符串開(kāi)頭和結(jié)尾的空白字符(空格, 換行, 制表符等).

代碼示例: 大小寫轉(zhuǎn)換

String str = " hello%$$%@#$%world 哈哈哈 " ;
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());

這兩個(gè)函數(shù)只轉(zhuǎn)換字母。

代碼示例: 字符串length() —— 取得字符串長(zhǎng)度

String str = " hello%$$%@#$%world 哈哈哈 " ;
System.out.println(str.length());

注意:數(shù)組長(zhǎng)度使用數(shù)組名稱.length屬性,而String中使用的是length()方法

代碼示例: 觀察isEmpty()方法 —— 判斷是否為空字符串(不是null,而是長(zhǎng)度為0)

System.out.println("hello".isEmpty());
System.out.println("".isEmpty());
System.out.println(new String().isEmpty());

String類并沒(méi)有提供首字母大寫操作,需要自己實(shí)現(xiàn).

代碼示例: 首字母大寫

public static void main(String[] args) {
    System.out.println(fistUpper("yuisama"));
    System.out.println(fistUpper(""));
    System.out.println(fistUpper("a"));
}
public static String fistUpper(String str) {
    if ("".equals(str)||str==null) {
        return str ;
    }
    if (str.length()>1) {
        return str.substring(0, 1).toUpperCase()+str.substring(1) ;
    }
    return str.toUpperCase() ;
}

StringBuffer 和 StringBuilder

首先來(lái)回顧下String類的特點(diǎn):

任何的字符串常量都是String對(duì)象,而且String的常量一旦聲明不可改變,如果改變對(duì)象內(nèi)容,改變的是其引用的指向而已。

通常來(lái)講String的操作比較簡(jiǎn)單,但是由于String的不可更改特性,為了方便字符串的修改,提供了其兩大類。

這兩大類大部分功能是相同的,我們主要介紹

StringBuffer

在String中使用"+"來(lái)進(jìn)行字符串連接,但是這個(gè)操作在

StringBuffer

類中需要更改為append()方法:

public synchronized StringBuffer append(各種數(shù)據(jù)類型 b)

我們來(lái)看這類的繼承結(jié)構(gòu):

  • 字符串反轉(zhuǎn):
public synchronized StringBuffer reverse()

代碼示例: 字符串反轉(zhuǎn)(reverse)

StringBuffer sb = new StringBuffer("helloworld");
System.out.println(sb.reverse());

刪除指定范圍的數(shù)據(jù)(delete):

public synchronized StringBuffer delete(int start, int end)

代碼示例: 觀察刪除操作( delete( , ) )

StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.delete(5, 10)); 

插入數(shù)據(jù)(insert)

public synchronized StringBuffer insert(int offset, 各種數(shù)據(jù)類型 b) 

代碼示例: 觀察插入操作( insert( , ) )

StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.delete(5, 10).insert(0, "你好")); 

小結(jié)

字符串操作是我們以后工作中非常常用的操作. 使用起來(lái)都非常簡(jiǎn)單方便, 一定要使用熟練.

補(bǔ)充

1.什么是哈希表:數(shù)據(jù)結(jié)構(gòu)–>描述和組織數(shù)據(jù)的一種方式。

12 45 2 7 15 92

問(wèn)題:如何去查找到一個(gè)關(guān)鍵字

1、順序查找:通過(guò)關(guān)鍵字的一個(gè)一個(gè)的比較,才能找到O(n)

2、排序+二分查找

哈希表時(shí)間效率非常高 效率可以高到O(1)。

2.數(shù)組的賦值 只有1次機(jī)會(huì) 就是在定義的時(shí)候

array不可以直接進(jìn)行二次賦值,如下圖所示:

我們?cè)趎ew了一個(gè)新的array后,我們就可以對(duì)array進(jìn)行二次賦值了

但是我們的數(shù)組array用了final修飾后就不可以改變了

若array被final修飾后,還想修改array的值,那我們便需要通過(guò)反射修改array

到此這篇關(guān)于Java-String類最全匯總(下篇)的文章就介紹到這了,其他的內(nèi)容(上篇)請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java String、StringBuilder和StringBuffer的區(qū)別詳解

    java String、StringBuilder和StringBuffer的區(qū)別詳解

    這篇文章主要介紹了java String、StringBuilder和StringBuffer的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 詳解springcloud Feign的Hystrix支持

    詳解springcloud Feign的Hystrix支持

    這篇文章主要介紹了詳解springcloud Feign的Hystrix支持,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Mybatis Generator Plugin悲觀鎖實(shí)現(xiàn)示例

    Mybatis Generator Plugin悲觀鎖實(shí)現(xiàn)示例

    本文將從悲觀鎖為例,讓你快速了解如何實(shí)現(xiàn)Mybatis Generator Plugin。文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼

    SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼

    延時(shí)隊(duì)列場(chǎng)景在我們?nèi)粘I(yè)務(wù)開(kāi)發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊(duì)列,本文就來(lái)介紹一下SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • java:程序包javafx.geometry不存在問(wèn)題及解決

    java:程序包javafx.geometry不存在問(wèn)題及解決

    這篇文章主要介紹了java:程序包javafx.geometry不存在問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 淺談SpringCloud feign的http請(qǐng)求組件優(yōu)化方案

    淺談SpringCloud feign的http請(qǐng)求組件優(yōu)化方案

    這篇文章主要介紹了淺談SpringCloud feign的http請(qǐng)求組件優(yōu)化方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java編程中最基礎(chǔ)的文件和目錄操作方法詳解

    Java編程中最基礎(chǔ)的文件和目錄操作方法詳解

    這篇文章主要介紹了Java編程中最基礎(chǔ)的文件和目錄操作方法詳解,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Java排序算法之堆排思想及代碼實(shí)現(xiàn)

    Java排序算法之堆排思想及代碼實(shí)現(xiàn)

    今天小編就為大家分享一篇關(guān)于Java排序算法之堆排思想及代碼實(shí)現(xiàn),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • IDEA設(shè)置多行展示導(dǎo)航欄方式

    IDEA設(shè)置多行展示導(dǎo)航欄方式

    在IDEA中開(kāi)啟多行導(dǎo)航欄可以增加工作效率,具體操作步驟包括訪問(wèn)“File”,進(jìn)入“Settings”,選擇“Editor”后修改“EditorTabs”設(shè)置中的“Show tabs in one row”選項(xiàng),取消勾選后保存即可,這使得在打開(kāi)多個(gè)文件時(shí),導(dǎo)航欄可以顯示更多標(biāo)簽,便于管理和查看代碼
    2024-09-09
  • Java?Elastic-Job分布式定時(shí)任務(wù)使用方法介紹

    Java?Elastic-Job分布式定時(shí)任務(wù)使用方法介紹

    xxl-job?通過(guò)一個(gè)中心式的調(diào)度平臺(tái),調(diào)度多個(gè)執(zhí)行器執(zhí)行任務(wù),調(diào)度中心通過(guò)?DB?鎖保證集群分布式調(diào)度的一致性,這樣擴(kuò)展執(zhí)行器會(huì)增大?DB?的壓力,然而大部分公司的任務(wù)數(shù),執(zhí)行器并不多;xxl-job?提供了非常好用的監(jiān)控頁(yè)面甚至還有任務(wù)失敗的郵件告警功能
    2023-01-01

最新評(píng)論