自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java11已發(fā)布,String還能這樣玩!

開發(fā) 后端
在文章《Java 11 正式發(fā)布,這 8 個逆天新特性教你寫出更牛逼的代碼》中,我有介紹到 Java 11 的八個新特性,其中關(guān)于 String 加強部分,我覺得有點意思,這里單獨再拉出來講。

 [[252241]]

在文章《Java 11 正式發(fā)布,這 8 個逆天新特性教你寫出更牛逼的代碼》中,我有介紹到 Java 11 的八個新特性,其中關(guān)于 String 加強部分,我覺得有點意思,這里單獨再拉出來講。

Java 11 增加了一系列的字符串處理方法,如以下所示。 

  1. // 判斷字符串是否為空白  
  2. " ".isBlank();                // true  
  3. // 去除首尾空格  
  4. " Javastack ".strip();          // "Javastack"  
  5. // 去除尾部空格   
  6. " Javastack ".stripTrailing();  // " Javastack"  
  7. // 去除首部空格   
  8. " Javastack ".stripLeading();   // "Javastack "  
  9. // 復(fù)制字符串  
  10. "Java".repeat(3);             // "JavaJavaJava"  
  11. // 行數(shù)統(tǒng)計  
  12. "A\nB\nC".lines().count();    // 3 

最有意思的是 repeat 和 lines 方法了,來看下還能怎么玩!

repeat

repeat 方法的作用就是重復(fù)一個字符串 N 遍,可以用來代替工具類:org.apache.commons.lang3.StringUtils#repeat(java.lang.String, int),來看下 repeat 的源碼。 

  1. public String repeat(int count) {  
  2.     if (count < 0) {  
  3.         throw new IllegalArgumentException("count is negative: " + count);  
  4.     }  
  5.     if (count == 1) {  
  6.         return this;  
  7.     }  
  8.     final int len = value.length;  
  9.     if (len == 0 || count == 0) {  
  10.         return "";  
  11.     }  
  12.     if (len == 1) {  
  13.         final byte[] single = new byte[count];  
  14.         Arrays.fill(single, value[0]);  
  15.         return new String(single, coder);  
  16.     }  
  17.     if (Integer.MAX_VALUE / count < len) {  
  18.         throw new OutOfMemoryError("Repeating " + len + " bytes String " + count +  
  19.                 " times will produce a String exceeding maximum size.");  
  20.     }  
  21.     final int limit = len * count;  
  22.     final byte[] multiple = new byte[limit];  
  23.     System.arraycopy(value, 0, multiple, 0, len);  
  24.     int copied = len 
  25.     for (; copied < limit - copied; copied <<= 1) {  
  26.         System.arraycopy(multiple, 0, multiple, copied, copied);  
  27.     }  
  28.     System.arraycopy(multiple, 0, multiple, copied, limit - copied);  
  29.     return new String(multiple, coder);  

來看下更多的用法。 

  1. String str = "Java" 
  2. // 小于0:java.lang.IllegalArgumentException  
  3. System.out.println(str.repeat(-2));  
  4. // 等于0:空白串("")  
  5. System.out.println(str.repeat(0));  
  6. // JavaJavaJava  
  7. System.out.println(str.repeat(3));  
  8. // java.lang.OutOfMemoryError  
  9. System.out.println(str.repeat(Integer.MAX_VALUE)); 

所以說 repeat 并不是可以***增長的,有使用限制的,達到一定量就會報內(nèi)存溢出異常。

lines 

  1. public Stream<String> lines() {  
  2.     return isLatin1() ? StringLatin1.lines(value)  
  3.                       : StringUTF16.lines(value);  

lines 方法返回一個字符串 Stream, 可以識別 \n 和 \r 換行符換行。 

  1. // 4  
  2. System.out.println("A\nB\nC\rD".lines().count()); 

是不是很好?在將來肯定有武之地!如批量讀取文件內(nèi)容到一個 Stream 中,就能很好的識別行結(jié)束符了。

責(zé)任編輯:龐桂玉 來源: Java技術(shù)棧
相關(guān)推薦

2020-11-16 13:38:31

PostMessage

2021-07-28 06:10:47

拖拽設(shè)計器 transmat

2021-09-05 07:55:37

前端Emoji 表情

2024-08-02 08:38:20

Controller接口地址

2024-12-03 09:45:34

2024-01-30 09:21:29

CSS文字效果文字裝飾

2021-04-09 08:23:30

Css前端加載動畫

2023-02-26 00:00:02

字符串分割String

2020-05-22 10:00:08

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計軟件設(shè)計

2021-01-30 07:51:59

微信微信8.0騰訊

2023-01-30 08:46:20

GoGo1兼容性

2022-10-31 08:47:21

人臉識別按鍵鍵盤

2019-11-08 10:48:07

Windows操作系統(tǒng)微信Windows 10

2021-10-29 07:49:22

Spring事務(wù)管理

2016-09-23 15:36:53

Windows10開始菜單程序

2022-02-09 15:55:01

JavaHttpClientJAVA11

2020-05-09 16:45:56

ping命令Linux

2012-07-13 11:32:16

網(wǎng)絡(luò)出口

2009-06-11 10:47:16

Fedora 11Fedora 11下載Fedora

2020-09-14 11:26:54

BinlogCanal數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號