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

Java字符串操作和C#字符串操作的不同小結(jié)

 更新時(shí)間:2018年12月04日 10:00:36   作者:baidixing  
在JAVA語言中,字符串?dāng)?shù)據(jù)實(shí)際上由String類所實(shí)現(xiàn)的。下面這篇文章主要給大家介紹了關(guān)于Java字符串操作和C#字符串操作的不同的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

每種語言都會(huì)有字符串的操作,因?yàn)樽址俏覀兤匠i_發(fā)使用頻率最高的一種類型。今天我們來聊一下Java的字符串操作及在某些具體方法中與C#的不同,對(duì)于需要熟悉多種語言的人來說,作為一種參考。進(jìn)行誡勉

首先,什么是字符串?

字符串是字符的序列,是作為一種對(duì)象而存在。說的直白點(diǎn),字符串就是一些字符的組合,從而構(gòu)成字符串,例如“abc”就是字符串,"郭志奇"也是一種賜福穿。

我們知道,Java是一種面向?qū)ο蟮母呒?jí)程序語言。所有事物均為對(duì)象,字符串也不例外,也是一種對(duì)象,其對(duì)應(yīng)類型為String。

下面,我們分幾種情況來進(jìn)行說明字符串:

1、字符串的創(chuàng)建

2、字符串操作

  • 字符串連接
  • 字符串長度
  • 字符串查找
  • 獲取指定索引的字符
  • 去重空格
  • 判斷相等
  • 大小寫轉(zhuǎn)換
  • 字符串分隔
  • 字符串比較

字符串創(chuàng)建

字符串必須先聲明并進(jìn)行初始化,才能使用,否則編譯器會(huì)報(bào)出 變量未初始化錯(cuò)誤。

請(qǐng)注意:Java中字符串定義的類型為String(第一個(gè)字母大寫),對(duì)于C#程序員來說,看著不太舒服,因?yàn)閏#中字符串定義為string (第一個(gè)字母小寫),但C#中也是有String類的

創(chuàng)建字符串也分幾種方式,可以根據(jù)需求靈活組織:

String(char a[])--Java代碼

  char a[] = { 'a', 'b', 'c' };
  String source = new String(a);
  System.out.println(source);//輸出結(jié)果為abc

String(char a[],int offset,int length)--Java代碼

  char a[] = { 'a', 'b', 'c' };
  String source = new String(a, 1, 2);
  System.out.println(source);//輸出為bc

字符串常量:

String source=“郭志奇”;

   String source = "郭志奇";
   String source1 = "郭志奇";
   System.out.println(source == source1);// 輸出true
   System.out.println(source.equals(source1));// 輸出true

此處簡(jiǎn)單提一下,Java中雙等號(hào)== 表示的是引用是否相同,equals比較的是實(shí)際的字符串值。

對(duì)應(yīng)的C#代碼

   string source = "郭志奇";
   string source1 = "郭志奇";
   Console.WriteLine(source==source1);//輸出True
   Console.WriteLine(source.Equals(source1));//輸出True
   Console.WriteLine(string.ReferenceEquals(source,source1));//輸出True
   Console.Read();

在C#中雙等號(hào)以及equals比較的是實(shí)際的值,而refreshEquals比較的是引用是否相同。和Java略有不同。

字符串操作

字符串連接

通過加號(hào)+可以將兩個(gè)字符串進(jìn)行連接。請(qǐng)注意,字符串與其他類型連接,會(huì)自動(dòng)調(diào)用其toString方法轉(zhuǎn)換成字符串,然后進(jìn)行拼接。
Java代碼:

  String source = "郭志奇";
  String source2 = "郭語晨";
  String source3 = source + source2;
  System.out.println(source3);// 輸出郭志奇郭語晨
  String source4 = source + 521;// 字符串與數(shù)字拼接
  System.out.println(source4);//輸出郭志奇521

concat:字符串拼接

   String source = "郭志奇";
   String source2 = "郭語晨";
   String source5 = source.concat(source2);
   System.out.println(source5);// 輸出郭志奇郭語晨

字符串長度

通過length()方法獲取字符串長度。請(qǐng)注意:包含字符串中空格的長度。
Java代碼:

   String source = "  郭志奇 ";//前綴包含一個(gè)空格及一個(gè)tab 后綴包含一個(gè)空格
   System.out.println(source.length());// 輸出6

C#代碼:

找茬:從C#輸出的長度可以看到,Tab在Java中長度為1,而在C#長度為2. 英文tab

    string source = " 郭志奇 ";
    Console.WriteLine(source.Length);//輸出7

字符串查找

兩種字符串查找方法:

indexOf():從字符串開始位置進(jìn)行查找

   String source = "郭志奇";
   System.out.println(source.indexOf("郭"));// 輸出0
   System.out.println(source.indexOf(""));// 輸出0

lastIndexOf()方法:從字符串結(jié)束位置開始查找

   String source = "郭志奇";
   System.out.println(source.lastIndexOf("郭"));// 輸出0
   System.out.println(source.lastIndexOf(""));// 輸出3

找茬:indexOf查找空字符串,返回值是0。lastIndexOf方法查找空格,返回值是3.等于字符串的長度。

查看lastIndexOf對(duì)應(yīng)的C#代碼實(shí)現(xiàn):

    string source = "郭志奇";
    Console.WriteLine(source.Length);//輸出3
    Console.WriteLine(source.LastIndexOf(""));//輸出2
    Console.Read();

通過對(duì)比lastIndexOf查找空字符串,可以發(fā)現(xiàn)C#和Java的不同,Java返回的是字符串的長度,而C#返回的是字符串長度-1。個(gè)人認(rèn)為C#的處理更符合目的。

獲取指定索引的字符

通過charAt方法獲取指定索引的字符

   String source = "郭志奇";
   System.out.println(source.charAt(0));//輸出郭
   System.out.println(source.charAt(source.length() - 1));//輸出奇

為了學(xué)習(xí),我們就要思考,假如我輸入了負(fù)數(shù)或大于字符串長度的索引會(huì)出現(xiàn)什么呢?代碼驗(yàn)證

   String source = "郭志奇";
   System.out.println(source.charAt(-1));
   System.out.println(source.charAt(source.length() + 11));

沒錯(cuò),代碼執(zhí)行出錯(cuò)了,拋出異常:java.lang.StringIndexOutOfBoundsException

去重空格

通過trim方法移除字符串前后空格(包含tab)

  String source = " 郭志奇 ";// 前后都有空格
   String source1 = " 郭志奇 ";
  System.out.println(source.length());
  System.out.println(source.trim().length());
  System.out.println(source1.length());
  System.out.println(source1.trim().length());

令人遺憾的是,Java沒有提供只清空前綴空格或后綴空格的方法。而C#卻有。

判斷相等

兩種判斷字符串相等的方法,雙等號(hào)及equals、equalsIgnoreCase

通過代碼來進(jìn)行說明:

  String source = new String("郭志奇A");
  String source1 = new String("郭語晨");
  String source2 = "郭志奇A";
  String source3 = "郭語晨";

  String source4 = "郭志奇a";

  System.out.println(source == source2);// false
  System.out.println(source.equals(source2));// true
  System.out.println(source1 == source3);// false
  System.out.println(source1.equals(source3));// true

  System.out.println(source == source4);// false
  System.out.println(source.equals(source4));// false
  System.out.println(source.equalsIgnoreCase(source4));// true

雙等號(hào)代表的是字符串引用是否相同,對(duì)于不同對(duì)象的字符串,雙等號(hào)比較是不同的。

equals比較的是字符串的值,但區(qū)分大小寫

equalsIgnoreCase:比較的是字符串的值,不區(qū)分大小寫

進(jìn)行字符串比較,盡量避免使用雙等號(hào)。

大小寫轉(zhuǎn)換

toUpperCase轉(zhuǎn)換成大寫形式,toLowerCase轉(zhuǎn)換成小寫形式。但對(duì)于數(shù)字、空格則會(huì)忽略,不進(jìn)行轉(zhuǎn)換。比較簡(jiǎn)單

字符串分隔

通過split方法進(jìn)行字符串分隔,split參數(shù)是分隔符,返回值是分割后的字符串?dāng)?shù)組。較簡(jiǎn)單。

字符串比較

通過compareTo方法進(jìn)行字符串比較,

  String source = "ab";
  String source1 = "ba";
  String source2 = "ab";
  System.out.println(source.compareTo(source1));//返回值-1
  System.out.println(source.compareTo(source2));//返回值0
  System.out.println(source1.compareTo(source2));//返回值1

  System.out.println(source.compareToIgnoreCase(source1));//返回值-1
  System.out.println(source.compareToIgnoreCase(source2));//返回值0
  System.out.println(source1.compareToIgnoreCase(source2));//返回值1

compareTo方法會(huì)逐個(gè)字符進(jìn)行比較,如果源字符串比目標(biāo)字符串大,那么返回正整數(shù);如果源字符串與目標(biāo)字符串相同,那么返回0;如果源字符串比目標(biāo)字符串小,那么返回負(fù)數(shù)。

請(qǐng)注意:

1、返回值為0,那么字符串通過equals比較會(huì)相同

2、返回值正整數(shù)、負(fù)數(shù),是源字符串不同的字符相減所得。

字符串使我們?nèi)粘i_發(fā)使用頻率最高的類型,因此要數(shù)量掌握字符串的各種操作,以及一些坑點(diǎn),才能在編碼中輕松、愉快的避免各種bug的出現(xiàn)。

本次說明只介紹了字符串的冰山一角,對(duì)于更重要的字符串格式化,本次沒有涉及,因?yàn)榈暗白址袷交?,就可以單?dú)寫一篇更長的博文才能說明。下次再聊。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Java實(shí)現(xiàn)圖形化界面的日歷

    Java實(shí)現(xiàn)圖形化界面的日歷

    這篇文章主要介紹了Java實(shí)現(xiàn)圖形化界面的日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java VisualVM監(jiān)控遠(yuǎn)程JVM(詳解)

    Java VisualVM監(jiān)控遠(yuǎn)程JVM(詳解)

    下面小編就為大家?guī)硪黄狫ava VisualVM監(jiān)控遠(yuǎn)程JVM(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 詳解Java線程的創(chuàng)建及休眠

    詳解Java線程的創(chuàng)建及休眠

    今天帶大家學(xué)習(xí)的是Java的相關(guān)知識(shí),文章圍繞著Java線程的創(chuàng)建及休眠展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 淺談foreach寫失效的問題

    淺談foreach寫失效的問題

    下面小編就為大家?guī)硪黄獪\談foreach寫失效的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java調(diào)用Redis集群代碼及問題解決

    Java調(diào)用Redis集群代碼及問題解決

    這篇文章主要介紹了Java調(diào)用Redis集群代碼及問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • springboot使用@value讀取配置的方法

    springboot使用@value讀取配置的方法

    今天我們來講一下如何通過python來實(shí)現(xiàn)自動(dòng)登陸京東,以及簽到領(lǐng)取金幣。本文圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-10-10
  • 根據(jù)URL下載圖片至客戶端、服務(wù)器的簡(jiǎn)單實(shí)例

    根據(jù)URL下載圖片至客戶端、服務(wù)器的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄鶕?jù)URL下載圖片至客戶端、服務(wù)器的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Java基于jeeplus vue實(shí)現(xiàn)簡(jiǎn)單工作流過程圖解

    Java基于jeeplus vue實(shí)現(xiàn)簡(jiǎn)單工作流過程圖解

    這篇文章主要介紹了Java基于jeeplus vue實(shí)現(xiàn)簡(jiǎn)單工作流過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • IDEA2022創(chuàng)建Maven Web項(xiàng)目教程(圖文)

    IDEA2022創(chuàng)建Maven Web項(xiàng)目教程(圖文)

    本文主要介紹了IDEA2022創(chuàng)建Maven Web項(xiàng)目教程,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringBoot2.6.x 與 Swagger3 兼容問題及解決方法

    SpringBoot2.6.x 與 Swagger3 兼容問題及解決方法

    文章介紹了Spring Boot 2.6.x與Swagger 3兼容性問題的解決方法,如果項(xiàng)目中未引入spring-boot-starter-actuator,則在yml文件中加入相關(guān)配置,反之,需要添加其他配置,感興趣的朋友一起看看吧
    2025-03-03

最新評(píng)論

石门县| 通辽市| 襄樊市| 红安县| 长顺县| 泰来县| 营口市| 博客| 天祝| 会宁县| 海安县| 泽州县| 手机| 佛坪县| 平谷区| 精河县| 宣威市| 沅陵县| 商丘市| 根河市| 化隆| 昭觉县| 宜春市| 隆化县| 巴塘县| 宝山区| 临夏县| 江达县| 象山县| 嘉黎县| 新宁县| 信丰县| 临西县| 宜川县| 眉山市| 尚志市| 巴中市| 肃宁县| 南康市| 色达县| 清苑县|