簡單了解Java字符串(操作)
字符串遍歷
String str = "asdfghjkl";
1.
for(int i=0;i<str.length();i++){ char ch = str.charAt(i); }
2.
char[] c=str.toCharArray(); for(char cc:c){ ...//cc 直接用了 }
3.
for(int i=0;i<str.length();i++){ String subStr = str.substring(i, i+1) }
類似的,arraylist 三種遍歷方法:
ArrayList 支持 3 種遍歷方式 (01) 第一種,通過迭代器遍歷。即通過 Iterator 去遍歷。 Integer value = null; Iterator iter = list.iterator(); while (iter.hasNext()) { value = (Integer)iter.next(); } (02) 第二種,隨機(jī)訪問,通過索引值去遍歷。 由于 ArrayList 實(shí)現(xiàn)了 RandomAccess 接口,它支持通過索引值去隨機(jī)訪問元素。 Integer value = null; int size = list.size(); for (int i=0; i<size; i++) { value = (Integer)list.get(i); } (03) 第三種,for 循環(huán)遍歷。如下: Integer value = null; for (Integer integ:list) { value = integ; }
效率分析:遍歷 ArrayList 時(shí),使用隨機(jī)訪問 (即,通過索引序號訪問) 效率最高,而使用迭代器的效率最低!
類型轉(zhuǎn)換
如何實(shí)現(xiàn) String 與基本數(shù)據(jù)類型的裝換
將 String 轉(zhuǎn)換為基本的數(shù)據(jù)類型。8 個(gè) wrapper class(Integer,Double,...)提供了相對應(yīng)的方法 parsexxx(String str)將字符串轉(zhuǎn)換為基本的數(shù)據(jù)類型,如下:
String str1 = "123"; String str2 = "12.3"; String str3 = "true"; int a = Integer.parseInt(str1); //123 double d = Double.parseDouble(str2); //12.3 boolean flag = Boolean.parseBoolean(str3); //true
如何將基本數(shù)據(jù)類型轉(zhuǎn)換為 String,可以使用 String.valueOf()方法進(jìn)行轉(zhuǎn)換,如下:
int a = 123; double b = 13.05; boolean flag = true; String str1 = String.valueOf(a); //123 String str2 = String.valueOf(b); //13.05 String str3 = String.valueOf(flag); //true
同時(shí)還有著更為簡單快捷的方式,直接在基本數(shù)據(jù)類型之后添加 “ ”,如下;
String str1 = a +""; //a String str2 = flag + ""; //true
分割字符串
在 java 里分割字符串是通過正則表達(dá)式來分割
String str = "aa-bb-cc-dd"; String[] res = str.split("-"); //aa bb cc dd
取子串
String str = "abcdefg"; str = str.substring(2, 5); //cde
一個(gè)問題
在一些敏感信息上, 為什么傾向用 char[], 而不是 String?
當(dāng) String 一旦創(chuàng)建, 便不可再修改, 直到 gc 將它回收. 可 gc 的回收時(shí)間無法預(yù)測. 即使一個(gè)對象不存在引用, 也需要在未來的某個(gè)時(shí)間才會讓給出回收. 所以 String 操作敏感信息, 有滲漏的風(fēng)險(xiǎn). 可 char[] 就不一樣了, 我們可以通過程序直接控制其元素, 一般敏感信息不再有用, 直接將數(shù)組即可, 因此更傾向使用 char[] 來保存密碼等敏感信息
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了第三方網(wǎng)站微信登錄的java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Java并發(fā)系列之ConcurrentHashMap源碼分析
這篇文章主要為大家詳細(xì)分析了Java并發(fā)系列之ConcurrentHashMap源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03使用java API實(shí)現(xiàn)zip遞歸壓縮和解壓文件夾
這篇文章主要介紹了使用java API實(shí)現(xiàn)zip遞歸壓縮文件夾及解壓,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08springBoot項(xiàng)目打包idea的多種方法
這篇文章主要介紹了springBoot項(xiàng)目打包idea的多種方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07SpringBoot搭配AOP實(shí)現(xiàn)自定義注解
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何搭配AOP實(shí)現(xiàn)自定義注解,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解
這篇文章主要為大家介紹了Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09JDK動態(tài)代理過程原理及手寫實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了JDK動態(tài)代理過程原理及手寫實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Springdoc替換swagger的實(shí)現(xiàn)步驟分解
最近在spring看到的,spring要對api文檔動手了,有些人說swagger不好用,其實(shí)也沒那么不好用,有人說代碼還是有點(diǎn)侵入性,這倒是真的,我剛試了springdoc可以說還是有侵入性但是也可以沒有侵入性,這就看你對文檔有什么要求了2023-02-02Java基礎(chǔ)入門篇之邏輯控制練習(xí)題與猜數(shù)字游戲
猜數(shù)字游戲是一款經(jīng)典的游戲,該游戲說簡單也很簡單,說不簡單確實(shí)也很難,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)入門篇之邏輯控制練習(xí)題與猜數(shù)字游戲的相關(guān)資料,需要的朋友可以參考下2023-06-06