初識Java文本字符篇(JAVA字符)

      網友投稿 1005 2022-05-30

      字符串——string我們可以理解為0個或多個字符組成的序列,也可以理解為一句話,之前我們介紹了char類型用單引號來表示,在Java的字符串中我們用雙引號來表示字符串,極大地滿足了我們編程開發中的一些難題。

      注意的是,String類是final類,被final修飾的類是不可以繼承的,這個其實方法里面默認的,最后歸一我們講的是String其實是通過char字符數組來保存字符串的,這個也是比較的符合我們計算機程序的基本思想的。

      創建字符串

      package 字符串; public class 創建字符串 { public static void main(String args[]){ char[] javaHello = { 'j', 'a', 'v', 'a', '!', '!'}; String helloString = new String(javaHello); System.out.println( helloString ); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      上面的就是一個簡單的字符數組初始化的概念,同時我們用到了類的繼承,調用方法這些。

      注意:String 類是不可改變的,所以你一旦創建了 String 對象,那它的值就無法改變了

      字符串長度

      String 類的一個訪問器方法是 length() 方法,它返回字符串對象包含的字符數,思想和我們的Python類似。

      package 字符串; public class 字符串長度 { public static void main(String args[]) { String site = "你好!王小王;你好!Java"; int len = site.length(); System.out.println( "site的長度是 : " + len ); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      連接字符串

      在Python里面我們有三種的形式,逗號,format,%s,+,等這些連接的方法,但是在Java里面就會略有不同。

      "我的名字是 ".concat("王小王");

      1

      返回的是:我的名字是王小王

      但是有的時候我們會覺得這個方法有些繁瑣,我們還有一個和Python語言一樣的那就是加號連接。

      "Hello," + " 王小王" + "!"

      1

      加號不只是對于字符串,它對變量或者其他的值也可以,比如你去看看上面的那個代碼+len,不就是嗎。

      創建格式化字符串

      我們知道輸出格式化數字可以使用 printf() 和 format() 方法。

      String 類使用靜態方法 format() 返回一個String 對象而不是 PrintStream 對象。

      String 類的靜態方法 format() 能用來創建可復用的格式化字符串,而不僅僅是用于一次打印輸出。

      String方法

      下面我們將進入字符串的一系列方法,它的有些方法和Python其實是觸類旁通的,我們學起來也比較的明顯好懂!

      charAt() 方法

      這個方法我相信之前仔細看過那個條件控制篇的文章的小伙伴一定不會陌生,那個里面有一個字符的數據輸入,就用到了這個方法進行索引獲取。

      charAt() 方法用于返回指定索引處的字符。索引范圍為從 0 到 length() - 1。

      public class Test { public static void main(String args[]) { String s = "www.runoob.com"; char result = s.charAt(6); System.out.println(result); } }

      1

      2

      3

      4

      5

      6

      7

      它的索引方法和我們的Python都是類似的,這里獲取到的是n這個字符。

      初識Java之文本字符篇(JAVA字符)

      compareTo() 方法

      字符串與對象進行比較。 按字典順序比較兩個字符串。

      1

      2

      返回值

      返回值是整型,它是先比較對應字符的大小(ASCII碼順序),如果第一個字符和參數的第一個字符不等,結束比較,返回他們之間的差值,如果第一個字符和參數的第一個字符相等,則以第二個字符和參數的第二個字符做比較,以此類推,直至比較的字符或被比較的字符有一方結束。其實吧這個東西我覺得只需要了解就可以了。

      如果參數字符串等于此字符串,則返回值 0; 如果此字符串小于字符串參數,則返回一個小于 0 的值; 如果此字符串大于字符串參數,則返回一個大于 0 的值。

      1

      2

      3

      package 字符串; public class 字符串比較 { public static void main(String args[]) { String str1 = "王小王"; String str2 = "王小王"; String str3 = "王小王123"; int result = str1.compareTo( str2 ); System.out.println(result); result = str2.compareTo( str3 ); System.out.println(result); result = str3.compareTo( str1 ); System.out.println(result); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      compareToIgnoreCase() 方法用于按字典順序比較兩個字符串,不考慮大小寫,這里了解一下。

      contentEquals() 方法用于將此字符串與指定的 StringBuffer 比較。

      public boolean contentEquals(StringBuffer sb)

      1

      sb – 要與字符串比較的 StringBuffer

      如字符串與指定 StringBuffer 表示相同的字符序列,則返回 true;否則返回 false

      public class Test { public static void main(String args[]) { String str1 = "String1"; String str2 = "String2"; StringBuffer str3 = new StringBuffer( "String1"); boolean result = str1.contentEquals( str3 ); System.out.println(result); result = str2.contentEquals( str3 ); System.out.println(result); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      用法就是這樣,這里的str3是一個新建的StringBuffer的對象,這里大家可能會有的陌生,不過沒關系,后面慢慢就好了。

      copyValueOf() 方法

      這個方法有點陌生,我們仔細看看,首先我們看看語法格式

      public static String copyValueOf(char[] data, int offset, int count)

      1

      data -- 字符數組。 offset -- 子數組的初始偏移量。。 count -- 子數組的長度。

      1

      2

      3

      4

      5

      那么怎么去理解這個東西了,我們接下來看一看代碼演示

      package 字符串; public class 字符串偏移獲取 { public static void main(String args[]) { char[] Str1 = {'h', 'e', 'l', 'l', 'o', '!', 'r', 'u', 'n', 'o', 'o', 'b'}; String Str2 = ""; Str2 = Str2.copyValueOf( Str1 ); System.out.println("返回結果:" + Str2); Str2 = Str2.copyValueOf( Str1, 2, 6 ); System.out.println("返回結果:" + Str2); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      我們可以這樣去理解,首先里面的三個參數,第一個是字符數組,就是我們的數據,第二個就是我們要從那個索引位置開始獲取,默認為0開始,最后一個就是我們想要取到的位數是多少,這個和我們Python的字符串索引有的類似吧。

      endsWith() 方法

      endsWith() 方法用于測試字符串是否以指定的后綴結束。

      話不多說我們直接看代碼演示

      package 字符串; public class 字符串后綴 { public static void main(String args[]) { String Str = new String("王小王12345678.9"); boolean retVal; retVal = Str.endsWith( "王小王" ); System.out.println("返回值 = " + retVal ); retVal = Str.endsWith( ".9" ); System.out.println("返回值 = " + retVal ); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      如果參數表示的字符序列是此對象表示的字符序列的后綴,則返回 true;否則返回 false。注意,如果參數是空字符串,或者等于此 String 對象(用 equals(Object) 方法確定),則結果為 true。簡單來說就是一個判斷字符串后綴的方法

      說到這里了,我還是提一下關于這個new方法,為什么我們每一次新創建的字符串用的就是這個了,因為這樣比較方便,最后就是你也可以用之前的定義再去調用,這個的好處是讓他們實現在同一行代碼,使得結構更加緊湊。

      getChars() 方法

      getChars() 方法將字符從字符串復制到目標字符數組。

      public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

      1

      srcBegin -- 字符串中要復制的第一個字符的索引。 srcEnd -- 字符串中要復制的最后一個字符之后的索引。 dst -- 目標數組。 dstBegin -- 目標數組中的起始偏移量。

      1

      2

      3

      4

      5

      6

      7

      我們看看代碼演示

      package 字符串; public class 字符串復制 { public static void main(String args[]) { String Str1 = new String("王小王.123.王小王123456789"); char[] Str2 = new char[6]; try { Str1.getChars(4, 10, Str2, 0); System.out.print("拷貝的字符串為:" ); System.out.println(Str2 ); } catch( Exception ex) { System.out.println("觸發異常..."); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      這里其實就是一個簡單的復制,首先是初始索引,最后的索引,注意這個和之前的一個字符串偏移是不一樣的,那個是返回多少個字符copyValueOf() 方法

      ** indexOf() 方法**

      這個方法和我們的Python返回索引位置不相上下

      public int indexOf(int ch): 返回指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。 public int indexOf(int ch, int fromIndex): 返回從 fromIndex 位置開始查找指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。 int indexOf(String str): 返回指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。 int indexOf(String str, int fromIndex): 返回從 fromIndex 位置開始查找指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。

      1

      2

      3

      4

      5

      6

      7

      package 字符串; public class 返回字符串索引 { public static void main(String args[]) { String Str = new String("王小王123.w0ww.sina.com.cn"); String SubStr1 = new String("w0ww"); String SubStr2 = new String("com"); System.out.print("查找字符 o 第一次出現的位置 :" ); System.out.println(Str.indexOf( 'o' )); System.out.print("從第14個位置查找字符 o 第一次出現的位置 :" ); System.out.println(Str.indexOf( 'o', 14 )); System.out.print("子字符串 SubStr1 第一次出現的位置:" ); System.out.println( Str.indexOf( SubStr1 )); System.out.print("從第十五個位置開始搜索子字符串 SubStr1 第一次出現的位置 :" ); System.out.println( Str.indexOf( SubStr1, 15 )); System.out.print("子字符串 SubStr2 第一次出現的位置 :" ); System.out.println(Str.indexOf( SubStr2 )); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      這個里面解釋比較詳細了,我這里就不多余解釋,反正就是需要注意的是第一個是查找的字符,第二個是開始的位置。我建議仔細看看代碼和演示效果。

      lastIndexOf() 方法

      這個方法和上面的一樣的,知識要求的是從多少位置,返回最后一個出現該字符的位置索引。

      System.out.print("從第14個位置查找字符 o 最后出現的位置 :" ); System.out.println(Str.lastIndexOf( 'o', 14 ));

      1

      2

      toLowerCase() 方法

      toLowerCase() 方法將字符串轉換為小寫。

      public String toLowerCase(Locale locale)

      1

      public class Test { public static void main(String args[]) { String Str = new String("WWW.RUNOOB.COM"); System.out.print("返回值 :" ); System.out.println( Str.toLowerCase() ); } }

      1

      2

      3

      4

      5

      6

      7

      8

      toUpperCase() 方法將字符串小寫字符轉換為大寫。用法一樣

      其實字符串的方法有很多,但是有的我們確實用不到,如果你們遇見了也沒關系,去網上查詢相關的文檔再去學習,他們都是大同小異,只有掌握了方法才會學到自由自在。

      下面我們接著介紹幾個常見的

      replace() 方法

      replace() 方法通過用 newChar 字符替換字符串中出現的所有 oldChar 字符,并返回替換后的新字符串

      package 字符串; public class 字符串替換 { public static void main(String args[]) { String Str = new String("王小王123"); System.out.print("返回值 :" ); System.out.println(Str.replace('王', '小')); System.out.print("返回值 :" ); System.out.println(Str.replace('l', 'D')); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      replaceAll() 方法

      replaceAll() 方法使用給定的參數 replacement 替換字符串所有匹配給定的正則表達式的子字符串。

      成功則返回替換的字符串,失敗則返回原始字符串。

      package 字符串; public class 用正則替換字符串 { public static void main(String args[]) { String Str = new String("www.google.com"); System.out.print("匹配成功返回值 :" ); System.out.println(Str.replaceAll("(.*)google(.*)", "runoob" )); System.out.print("匹配失敗返回值 :" ); System.out.println(Str.replaceAll("(.*)taobao(.*)", "runoob" )); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      ** replaceFirst() 方法**

      replaceFirst() 方法使用給定的參數 replacement 替換字符串第一個匹配給定的正則表達式的子字符串。

      成功則返回替換的字符串,失敗則返回原始字符串。

      public class Test { public static void main(String args[]) { String Str = new String("hello runoob,I am from runoob。"); System.out.print("返回值 :" ); System.out.println(Str.replaceFirst("runoob", "google" )); System.out.print("返回值 :" ); System.out.println(Str.replaceFirst("(.*)runoob(.*)", "google" )); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      substring() 方法

      public String substring(int beginIndex, int endIndex)

      1

      它的語法其實比較簡單,就是一個初始位置的和末尾的截取,如果沒有默認結尾的,那么就會截取全部字符。

      split() 方法

      split() 方法根據匹配給定的正則表達式來拆分字符串。

      注意: . 、 $、 | 和 * 等轉義字符,必須得加 \。

      注意:多個分隔符,可以用 | 作為連字符。

      public String[] split(String regex, int limit)

      1

      這個和我們的Python語法一樣的

      package 字符串; public class 字符串分割 { public static void main(String args[]) { String str = new String("王小王-123-Java"); System.out.println("- 分隔符返回值 :" ); for (String retval: str.split("-")){ System.out.println(retval); } System.out.println(""); System.out.println("- 分隔符設置分割份數返回值 :" ); for (String retval: str.split("-", 2)){ System.out.println(retval); } System.out.println(""); String str2 = new String("王小王-123-Java"); System.out.println("轉義字符返回值 :" ); for (String retval: str2.split("\\.", 3)){ System.out.println(retval); } System.out.println(""); String str3 = new String("acount=? and uu =? or n=?"); System.out.println("多個分隔符返回值 :" ); for (String retval: str3.split("and|or")){ System.out.println(retval); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      trim() 方法

      trim() 方法用于刪除字符串的頭尾空白符。

      package 字符串; public class 字符串首尾去除空格 { public static void main(String args[]) { String Str = new String(" 王小王123456789 "); System.out.print("原始值 :" ); System.out.println( Str ); System.out.print("刪除頭尾空白 :" ); System.out.println( Str.trim() ); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      字符串格式化輸出

      在 Java 中格式化字符串最常用的方法就是 String.format()

      如果要說和Python的不同的就是不需要加入%這個詞

      package 字符串; public class 字符串格式化輸出 { public static void main(String[]args){ int i=10; String x = new String("hello java!"); System.out.println(String.format("%d+%s",i,x)); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      這個就是一個簡單的格式化輸出,至于如何去舉一反三,你可以去看看上面的那個圖片,什么樣的類型需要什么樣的格式化字符。

      Java StringBuffer 和 StringBuilder 類

      當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。

      和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,并且不產生新的未使用對象。

      StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問)。

      由于 StringBuilder 相較于 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類。

      package 字符串; public class StringBuffer類 { public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer("王小王:"); sBuffer.append("www"); sBuffer.append(".Baidu"); sBuffer.append(".com"); System.out.println(sBuffer); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      這一次的文章寫了很久,主要是想把字符串相關的知識點介紹的全面一點,這樣也有利于后面學習

      每文一語

      如果沒有暫時的目標,我覺得做好當下對的事情,也是一種自我尋找的結果!

      1

      Java Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何正確使用JMeter性能測試?緊扣面試實際要求(jmeter性能測試面試問題)
      下一篇:Java基本類庫和集合框架的使用(java的集合框架有哪些)
      相關文章
      久久久久亚洲AV无码专区首JN | 亚洲色大情网站www| 内射干少妇亚洲69XXX| 亚洲精品乱码久久久久久自慰 | 亚洲天堂一区在线| 91嫩草私人成人亚洲影院| 亚洲国产精品成人精品无码区 | 亚洲神级电影国语版| 亚洲一区综合在线播放| 久久精品国产亚洲AV麻豆~| 精品亚洲永久免费精品| 国产AV无码专区亚洲精品| 亚洲AV永久精品爱情岛论坛| 亚洲国产一成久久精品国产成人综合| 欧美色欧美亚洲另类二区| 亚洲第一se情网站| 亚洲成av人片天堂网老年人| 亚洲 另类 无码 在线| 亚洲日韩精品无码专区网站| 久久亚洲AV永久无码精品| 亚洲男人的天堂在线va拉文 | 亚洲国产综合91精品麻豆| 亚洲国产精品自在线一区二区| 久久国产精品亚洲综合| 久久青草亚洲AV无码麻豆| 亚洲av激情无码专区在线播放 | 亚洲jizzjizz在线播放久| 国产日本亚洲一区二区三区| 亚洲精品无码av中文字幕| 激情无码亚洲一区二区三区| 国产精品亚洲色婷婷99久久精品| 在线播放亚洲精品| 亚洲色偷偷狠狠综合网| 亚洲精品久久久www| 亚洲综合av永久无码精品一区二区 | 伊在人亚洲香蕉精品区麻豆| 亚洲美女在线国产| 亚洲情综合五月天| 亚洲av日韩av无码黑人| 亚洲最大在线视频| 亚洲国产精品无码久久|