?
在 java中,我們需要遍歷字符串,如何遍歷呢?首先我們先了解一下遍歷的概念: 在我們的計(jì)算機(jī)中,存儲(chǔ)的都是二進(jìn)制數(shù)據(jù),為了方便存儲(chǔ)和管理,我們把一段數(shù)據(jù)分成多個(gè)字符串。在 java中,遍歷字符串是使用 set ()方法進(jìn)行的。 set ()方法可以使用構(gòu)造函數(shù)和自動(dòng)構(gòu)造函數(shù)進(jìn)行遍歷操作。另外還可以通過(guò) findall ()方法進(jìn)行遍歷操作。在下面我們就來(lái)介紹一下如何通過(guò) set ()方法進(jìn)行遍歷字符串:
-
1、使用構(gòu)造函數(shù)
首先我們使用構(gòu)造函數(shù)來(lái)遍歷字符串: 在這里我們調(diào)用構(gòu)造函數(shù) set ()方法,調(diào)用此方法會(huì)自動(dòng)創(chuàng)建一個(gè)空列表。然后我們把這個(gè)空列表的內(nèi)容拷貝到字符串的末尾,并賦值給 str。這樣就遍歷完成了。set ()方法在使用的時(shí)候會(huì)進(jìn)行一下檢查,看是否為空,如果不是空的話,就會(huì)返回 true,否則會(huì)返回 false。 通過(guò)上面的代碼我們可以看到: 第一行和第二行使用了構(gòu)造函數(shù)遍歷字符串,但是并沒(méi)有創(chuàng)建空列表;第三行和第四行使用了自動(dòng)構(gòu)造函數(shù)遍歷字符串,但是并沒(méi)有創(chuàng)建空列表;第五行和第六行使用了構(gòu)造函數(shù)和自動(dòng)構(gòu)造函數(shù)都創(chuàng)建了一個(gè)空列表,第六行使用了構(gòu)造函數(shù)和自動(dòng)構(gòu)造函數(shù)都創(chuàng)建了一個(gè)空列表,第七行和第八行使用了自動(dòng)構(gòu)造函數(shù)創(chuàng)建了兩個(gè)空列表。最后一列使用了自動(dòng)構(gòu)造函數(shù)創(chuàng)建了一個(gè)空數(shù)組。 這里我們可以看到:第一行和第二行使用的是自動(dòng)構(gòu)造函數(shù)遍歷字符串;第三行和第四行使用的是構(gòu)造函數(shù)遍歷字符串;第七格和第八格使用的是自動(dòng)構(gòu)造函數(shù)遍歷字符串。 那么接下來(lái)我們來(lái)了解一下為什么會(huì)出現(xiàn)上面的問(wèn)題?原來(lái)是因?yàn)樵?java中使用構(gòu)造函數(shù)遍歷字符串,可以一次性遍歷多個(gè)字符串。而采用自動(dòng)構(gòu)造函數(shù)每次遍歷的時(shí)候只能遍歷空數(shù)組,所以就會(huì)出現(xiàn)上述的問(wèn)題。 而自動(dòng)構(gòu)造函數(shù)的返回類型是 null,也就是說(shuō)如果我們返回的是 null類型的值,那么這個(gè)空列表就不會(huì)被創(chuàng)建。上面我們已經(jīng)介紹完了如何遍歷字符串: 通過(guò)上面的分析我們知道,如果采用自動(dòng)構(gòu)造函數(shù)遍歷字符串的話,每次遍歷空數(shù)組都會(huì)創(chuàng)建一個(gè)空列表。這樣在遍歷完之后還需要再創(chuàng)建一個(gè)空列表,這樣就造成了內(nèi)存的浪費(fèi)。所以我們想要提高遍歷效率的話,盡量采用構(gòu)造函數(shù)進(jìn)行遍歷操作。
-
2、使用自動(dòng)構(gòu)造函數(shù)
自動(dòng)構(gòu)造函數(shù)是一種特殊的方法,它是自動(dòng)把一個(gè)對(duì)象轉(zhuǎn)換成一個(gè)新的對(duì)象,當(dāng)你在一個(gè)對(duì)象中聲明一個(gè)自動(dòng)構(gòu)造函數(shù)時(shí),自動(dòng)構(gòu)造函數(shù)會(huì)創(chuàng)建這個(gè)對(duì)象的子對(duì)象。自動(dòng)構(gòu)造函數(shù)使用相同的方法進(jìn)行遍歷操作,下面就來(lái)介紹一下如何使用自動(dòng)構(gòu)造函數(shù)遍歷字符串: 我們來(lái)看一下下面這個(gè)示例代碼: 上面這個(gè)代碼實(shí)現(xiàn)了遍歷字符串: 上面這個(gè)代碼也是遍歷字符串,但是它使用的是自動(dòng)構(gòu)造函數(shù),它把字符串轉(zhuǎn)換成了一個(gè)新的對(duì)象。注意:上面這個(gè)代碼也是不可以調(diào)用 set ()方法進(jìn)行遍歷操作的。 下面再來(lái)看一下如何使用自動(dòng)構(gòu)造函數(shù)進(jìn)行遍歷字符串: 上面這個(gè)代碼使用了自動(dòng)構(gòu)造函數(shù),它創(chuàng)建了一個(gè)新的對(duì)象,并且對(duì)對(duì)象進(jìn)行了初始化,可以使用 start ()方法來(lái)啟動(dòng)對(duì)象。但是由于 start ()方法是靜態(tài)方法,所以在執(zhí)行的時(shí)候會(huì)把程序運(yùn)行到 start ()方法上,這樣就會(huì)影響程序的執(zhí)行速度。
-
3、使用 findall ()方法
findall ()方法可以用來(lái)遍歷一個(gè)字符串,在遍歷過(guò)程中,該方法會(huì)不斷的遍歷字符串的末尾。如果要在多個(gè)字符串中進(jìn)行遍歷,該方法會(huì)返回多個(gè)字符串。這里需要注意一下, findall ()方法不會(huì)遍歷最后一個(gè)字符串,因?yàn)樵摲椒ú粫?huì)遍歷最后一個(gè)字符串的末尾,也不會(huì)遍歷第一個(gè)字符串的末尾。 在使用 findall ()方法進(jìn)行遍歷時(shí),需要注意以下兩點(diǎn): ①、當(dāng)遍歷結(jié)束后,可以對(duì) findall ()方法返回的第一個(gè)字符串進(jìn)行刪除操作。但是由于 findall ()方法返回的第一個(gè)字符串不是最后一個(gè)字符串的末尾,所以如果想要?jiǎng)h除最后一個(gè)字符串的末尾,需要重新定義一個(gè)新的 findall ()方法。 在上面我們了解了 set ()方法和 findall ()方法進(jìn)行遍歷操作時(shí)所使用的不同操作。在 java中還可以使用其他一些遍歷的方法: *遍歷鏈表中各個(gè)元素 上面我們已經(jīng)介紹了三種遍歷數(shù)據(jù)結(jié)構(gòu): set ()、 findall ()和構(gòu)造函數(shù)。下面我們介紹一下自動(dòng)構(gòu)造函數(shù)。
-
4、使用自動(dòng)構(gòu)造函數(shù)和 findall ()方法的優(yōu)缺點(diǎn)對(duì)比
自動(dòng)構(gòu)造函數(shù):優(yōu)點(diǎn)是,我們只需要定義一次自動(dòng)構(gòu)造函數(shù),就可以創(chuàng)建任意多個(gè)對(duì)象。缺點(diǎn)是,自動(dòng)構(gòu)造函數(shù)的效率比較低,并且我們需要?jiǎng)?chuàng)建對(duì)象的時(shí)候,就需要調(diào)用自動(dòng)構(gòu)造函數(shù),不方便。 findall ()方法:優(yōu)點(diǎn)是,當(dāng)我們給對(duì)象賦值時(shí),默認(rèn)值是一個(gè)整數(shù)。缺點(diǎn)是, findall ()方法的效率比較低,如果要返回的對(duì)象不為零則會(huì)導(dǎo)致程序崩潰。 自動(dòng)構(gòu)造函數(shù)和 findall ()方法各有優(yōu)缺點(diǎn)。我們應(yīng)該根據(jù)實(shí)際情況來(lái)選擇使用哪種方法來(lái)進(jìn)行遍歷操作。 set ()方法可以遍歷字符串; set ()方法需要在構(gòu)造函數(shù)中定義對(duì)象才可以進(jìn)行遍歷操作;
-
常用的java遍歷字符串代碼 :文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-736682.html
-
1.?使用for循環(huán)遍歷字符串:
```
String?str?=?"hello?world";
for?(int?i?=?0;?i?<?str.length();?i++)?{
char?c?=?str.charAt(i);
System.out.println(c);
}
```
2.?使用增強(qiáng)for循環(huán)遍歷字符串:
```
String?str?=?"hello?world";
for?(char?c?:?str.toCharArray())?{
System.out.println(c);
}
```
3.?使用while循環(huán)遍歷字符串:
```
String?str?=?"hello?world";
int?i?=?0;
while?(i?<?str.length())?{
char?c?=?str.charAt(i);
System.out.println(c);
i++;
}
```
4.?使用Iterator遍歷字符串:
```
String?str?=?"hello?world";
Iterator<Character>?iterator?=?str.chars().mapToObj(c?->?(char)?c).iterator();
while?(iterator.hasNext())?{
char?c?=?iterator.next();
System.out.println(c);
}
```文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-736682.html
到了這里,關(guān)于java遍歷字符串的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!