日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java字符串操作_Java的字符串操作

發(fā)布時間:2025/3/19 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java字符串操作_Java的字符串操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java的字符串操作

小型送分題:Java有字符串(String),StringBuffer(字符串緩存),StringBuilder(字符串建造者?)各種實現(xiàn),究其原因還是歷史上的各種坑。

一、不同字符串操作的對比

字符串操作

定義

內(nèi)存分配

可變性

線程安全性

性能

C/C++ 中的char* 操作

char *是一個指針,可以指向一個字符串數(shù)組

由系統(tǒng)處理

可變

不可知

高效,都是直接對內(nèi)存空間進行操作

C/C++中的char數(shù)組

是一個字符數(shù)組

手動釋放

不可變

不可知

高效,都是直接對內(nèi)存空間進行操作

C/C++中的String封裝類

string可以被看成是以字符為元素的一種容器。

手動釋放

可變

并發(fā)的讀操作是線程答安全的。

較char指針和char數(shù)組低效

Java中的String

String 類中使用 final 關(guān)鍵字修飾字符數(shù)組來保存字符串

系統(tǒng)處理

不可變

線程安全

每次對 String 類型進行改變的時候,都會生成一個新的 String 對象,然后將指針指向新的 String 對象。

Java中的StringBuilder

字符串變量

系統(tǒng)處理

可變

線程不安全

StringBuilder 相比使用 StringBuffer 僅能獲得 10%~15% 左右的性能提升

Java中的StringBuffer

字符串變量

系統(tǒng)處理

可變

線程安全

StringBuilder > StringBuffer > String

1.1 C++中const修飾指針

以*為界,左物右指

const在星號的左邊,是被指向的常量不可變

const在星號的右邊,是指針的指向不可變

說明

定義

指向const常量值的指針

const常量指針

解釋

當const在*的左邊時,實際物體值不變

指針本身成為一個const指針,必須把const標明的部分放在*的右邊

示例

const int * x;

int const * x;//兩者是一致的

int * const p = 地址 // 因為P 所指向的地址是不能被修改的,所以必須被初始化

\2. 小型送分題:請自己設(shè)計一整套測試程序,測試演示說明以上各種字符串類型的效率差別(條件不足的可以省略C/C++部分)。

二、 Java字符串操作類的性能比較

2.1 具體代碼

package stringTest;

/**

* @Description 測試字符串操作類的效率

* @Author 林澤鴻

* @Date 2020/4/24 20:55

*/

class StringEntities {

private static final int COUNTS = 10*10000;

/***

* 測試String拼接字符串添加操作時間

*/

public static void testString(){

System.out.print("Start to test String -> ");

long startTime = System.currentTimeMillis();

String strResult = "";

for(int i = 0; i< COUNTS; i++){

strResult += i;

}

long endTime = System.currentTimeMillis();

// 統(tǒng)計循環(huán)整個過程時間

System.out.println("Total time of String operation i: "+ (endTime - startTime));

}

/**

* 測試StringBuffer拼接字符串添加操作時間

*/

public static void testStringBuffer(){

System.out.print("Start to test StringBuffer -> ");

long startTime = System.currentTimeMillis();

StringBuffer strResult = new StringBuffer();

for(int i = 0; i< COUNTS; i++){

strResult.append(i);

}

long endTime = System.currentTimeMillis();

// 統(tǒng)計循環(huán)整個過程時間

System.out.println("Total time of StringBuffer operation is: "+ (endTime - startTime));

}

/**

* 測試StringBuilder拼接字符串添加操作時間

*/

public static void testStringBuilder(){

System.out.print("Start to test StringBuilder -> ");

long startTime = System.currentTimeMillis();

StringBuilder strResult = new StringBuilder();

for(int i = 0; i< COUNTS; i++){

strResult.append(i);

}

long endTime = System.currentTimeMillis();

// 統(tǒng)計循環(huán)整個過程時間

System.out.println("Total time of StringBuilder operation is:: "+ (endTime - startTime));

}

}

public class test {

public static void main(String[] args) {

StringEntities.testString();

StringEntities.testStringBuffer();

StringEntities.testStringBuilder();

}

}

2.2 測試結(jié)果

2.3 小結(jié)

可見,String類操作字符串十分消耗性能,StringBuilder比StringBuffer的效率略高。

\3. 小型送分題:請完成如下功能,使用正則表達式測試從字符串中識別

三、正則表達式的匹配

a) 郵編號碼

b) 區(qū)號-座機號碼

c) 手機號碼

3.1 具體代碼

package stringTest;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* @Description 正則表達式的測試

* @Author 林澤鴻

* @Date 2020/4/24 22:28

*/

public class RegularExpression {

public static void main(String[] args) {

// 要驗證的字符串

//郵政編碼

String zipCodeStr = "515160";

//區(qū)號-座機號碼

String areaCodeStr = "020-12345678";

//手機號碼

String phoneStr = "13633224466";

//郵政編碼

String zipCodeRegEx = "^[1-9]\\d{5}$";

//區(qū)號-座機號碼

String areaCodeRegEx = "\\d{3}-\\d{8}|\\d{4}-\\d{7}";

//手機號碼

String phoneRegEx = "^(?:13\\d|15\\d|18\\d)\\d{5}(\\d{3}|\\*{3})$";

System.out.println("下面進行驗證的三個字符串分別均是正確的郵政編碼,區(qū)號-座機號碼和手機號碼");

System.out.println("驗證是否是郵政編碼");

System.out.println(isMatch( zipCodeStr,zipCodeRegEx));

System.out.println(isMatch( areaCodeStr,zipCodeRegEx));

System.out.println(isMatch( phoneStr,zipCodeRegEx));

System.out.println("驗證是否是區(qū)號-座機號碼");

System.out.println(isMatch( zipCodeStr,areaCodeRegEx));

System.out.println(isMatch( areaCodeStr,areaCodeRegEx));

System.out.println(isMatch( phoneStr,areaCodeRegEx));

System.out.println("驗證是否是手機號");

System.out.println(isMatch( zipCodeStr,phoneRegEx));

System.out.println(isMatch( areaCodeStr,phoneRegEx));

System.out.println(isMatch( phoneStr,phoneRegEx));

}

static boolean isMatch(String str ,String regEx ){

// 編譯正則表達式

Pattern pattern = Pattern.compile(regEx);

// 忽略大小寫的寫法

Matcher matcher = pattern.matcher(str);

// 字符串是否與正則表達式相匹配

boolean isMatch = matcher.matches();

return isMatch;

}

}

3.2 測試結(jié)果

參考資料

總結(jié)

以上是生活随笔為你收集整理的java字符串操作_Java的字符串操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女扒开腿免费视频 | 30一40一50女人毛片 | 亚洲 欧美 激情 另类 校园 | 国产卡一卡二卡三无线乱码新区 | аⅴ资源中文在线天堂 | 91免费高清在线观看 | 91在线观看网站 | 国产美女视频91 | 色偷偷一区二区三区 | 无码人妻精品一区二区三区温州 | 日本免费无人高清 | 国产精品久久久久久久久免费软件 | 日韩图片区 | 中出在线观看 | 国产成人宗合 | 黄色天堂| 看全色黄大色黄大片女一次牛 | 久久国产香蕉视频 | 九九热av| 午夜影院日本 | 国产精品久久久久三级 | 黄色av免费观看 | 日本中文字幕成人 | 日韩国产综合 | 国产片免费 | 婷婷五月情 | 久久三级网 | 中文字幕福利 | 国产aa| www.成人免费 | 在线能看的av网站 | 欧美精品片 | 黄色a大片 | 日韩三级av | 免费在线观看成年人视频 | 致命弯道8在线观看免费高清完整 | 在线观看的av网址 | 久草资源网 | 人妻巨大乳一二三区 | 人妻无码一区二区三区四区 | 欧美日韩一二三区 | www.88av | 少妇做爰k8经典 | av在线不卡免费看 | 风韵多水的老熟妇 | 中国黄色三级视频 | 青青草原综合久久大伊人精品 | 国产精品搬运 | 成人精品久久久午夜福利 | 国产又色又爽 | 亚洲码在线观看 | 国产欧美视频一区 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产黄频在线观看 | 三度诱惑免费版电影在线观看 | 老司机福利院 | 人人澡人人透人人爽 | 日日麻批免费视频播放 | 日韩偷拍一区 | 免费视频黄色 | 岛国av在线 | 日本一区二区三区免费看 | 天堂在线观看 | 91精品久久久久久久久久入口 | 久久午夜无码鲁丝片 | 99热精品免费 | 51久久久 | 亚洲国产日韩一区无码精品久久久 | 伊人久久视频 | 日韩网站在线播放 | 2019毛片 | 国产精品国产三级国产aⅴ无密码 | 美腿丝袜一区二区三区 | 国产婷婷色综合av蜜臀av | 中文字幕欧美专区 | 亚洲一区在线免费观看 | 久草视频在线免费看 | 五月天啪啪 | 国产自偷自拍视频 | 久久免费小视频 | 美女视屏 | 中文字幕av一区二区三区人妻少妇 | 国产视频a | 毛片网站网址 | 国产日韩欧美在线观看 | 九九看片| 九九九久久久久 | 日韩不卡毛片 | 久久精品成人一区二区三区蜜臀 | 久草视| 亚洲伦理影院 | 精品人妻一区二区三区麻豆91 | 亚洲大尺度av | 婷婷五月综合久久中文字幕 | 在线日韩三级 | 亚洲成人精品一区 | 先锋影音av在线资源 | 免费av手机在线观看 | 免费久久 |