最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)容??捎梅椒ㄈ缦拢?/p>

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

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)文章

  • SpringBoot自動(dòng)裝配之Condition深入講解

    SpringBoot自動(dòng)裝配之Condition深入講解

    @Conditional表示僅當(dāng)所有指定條件都匹配時(shí),組件才有資格注冊(cè)。該@Conditional注釋可以在以下任一方式使用:作為任何@Bean方法的方法級(jí)注釋、作為任何類的直接或間接注釋的類型級(jí)別注釋@Component,包括@Configuration類、作為元注釋,目的是組成自定義構(gòu)造型注釋
    2023-01-01
  • Java這個(gè)名字的來(lái)歷與優(yōu)勢(shì)

    Java這個(gè)名字的來(lái)歷與優(yōu)勢(shì)

    Java是Sun公司開(kāi)發(fā)的一種編程語(yǔ)言,Sun公司最初的方向是讓Java來(lái)開(kāi)發(fā)一些電器裝置程序,Java名字的由來(lái),實(shí)際上是一個(gè)有趣的故事。
    2014-10-10
  • 對(duì)Java中傳值調(diào)用的理解分析

    對(duì)Java中傳值調(diào)用的理解分析

    這篇文章主要介紹了對(duì)Java中傳值調(diào)用的理解分析,通過(guò)分析對(duì)比,較為深入的分析了Java中傳值調(diào)用的原理與用法,需要的朋友可以參考下
    2015-01-01
  • 關(guān)于Springboot的日志配置

    關(guān)于Springboot的日志配置

    Spring Boot默認(rèn)使用LogBack日志系統(tǒng),如果不需要更改為其他日志系統(tǒng)如Log4j2等,則無(wú)需多余的配置,LogBack默認(rèn)將日志打印到控制臺(tái)上,需要的朋友可以參考下
    2023-05-05
  • 淺談SpringMVC中的session用法及細(xì)節(jié)記錄

    淺談SpringMVC中的session用法及細(xì)節(jié)記錄

    下面小編就為大家?guī)?lái)一篇淺談SpringMVC中的session用法及細(xì)節(jié)記錄。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法

    Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法

    這篇文章主要介紹了Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • SpringMVC中的常用注解源碼及解析

    SpringMVC中的常用注解源碼及解析

    這篇文章主要介紹了SpringMVC中的常用注解源碼及解析,SpringMVC是一種基于Java的Web框架,它使用了許多注解來(lái)簡(jiǎn)化開(kāi)發(fā)過(guò)程,本文列舉了一些常用的注解,需要的朋友可以參考下
    2023-10-10
  • Spring計(jì)劃任務(wù)用法實(shí)例詳解

    Spring計(jì)劃任務(wù)用法實(shí)例詳解

    這篇文章主要介紹了Spring計(jì)劃任務(wù)用法,結(jié)合實(shí)例形式詳細(xì)分析了spring計(jì)劃任務(wù)相關(guān)原理、配置、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • springboot自動(dòng)配置沒(méi)有生效的問(wèn)題定位(條件斷點(diǎn))

    springboot自動(dòng)配置沒(méi)有生效的問(wèn)題定位(條件斷點(diǎn))

    這篇文章主要介紹了springboot自動(dòng)配置未生效問(wèn)題定位,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來(lái)學(xué)習(xí)一下吧
    2019-06-06
  • 關(guān)于spring.factories失效原因分析及解決

    關(guān)于spring.factories失效原因分析及解決

    這篇文章主要介紹了關(guān)于spring.factories失效原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論

和静县| 龙岩市| 卢龙县| 四会市| 乡宁县| 德安县| 得荣县| 红原县| 新泰市| 沛县| 呼伦贝尔市| 肇庆市| 韶关市| 攀枝花市| 巴彦淖尔市| 房山区| 霍州市| 大石桥市| 墨江| 高陵县| 叙永县| 洪湖市| 阿荣旗| 麦盖提县| 巫溪县| 神农架林区| 景德镇市| 南平市| 思茅市| 会同县| 新晃| 双柏县| 乌兰察布市| 抚松县| 蓝山县| 娱乐| 平顶山市| 印江| 密山市| 宕昌县| 五河县|