摘要:已知常用子接口實(shí)現(xiàn)該接口的類可以成為語(yǔ)句的目標(biāo)唯一方法返回一個(gè)在一組類型的元素上進(jìn)行迭代的迭代器。使用遍歷對(duì)象判斷是否存在下一個(gè)元素獲取下一個(gè)元素移除該元素為類專門(mén)創(chuàng)建的接口。
6 Iterable
已知常用子接口:Collection
實(shí)現(xiàn)該接口的類可以成為foreach 語(yǔ)句的目標(biāo)
Listlist = new ArrayList (); for(List item : list){ do something... }
唯一方法:Iterator
//使用Iterator7 Readable: 為Scanner類專門(mén)創(chuàng)建的接口。遍歷Collection對(duì)象 List list = new ArrayList (); for (int i = 0; i < 10; i++) { list.add(i); } Iterator iterator = list.iterator(); while(iterator.hasNext()){ //判斷是否存在下一個(gè)元素 int itme = (int) iterator.next(); //獲取下一個(gè)元素 System.out.println(itme); iterator.remove(); //移除該元素 }
實(shí)例化一個(gè)Scanner對(duì)象,構(gòu)造方法的入?yún)⒖梢允侨魏螌?shí)現(xiàn)了Readable接口的類的對(duì)象,該類實(shí)現(xiàn)Readable接口的read()方法,當(dāng)調(diào)用Scanner對(duì)象的next()方法時(shí),講使用自己實(shí)現(xiàn)的read()方法。
package com.heisenberg.Learn; import java.nio.CharBuffer; import java.util.Scanner; import static java.lang.System.*; public class Test implements Readable{ private int readCount = 1;//read()執(zhí)行次數(shù) private int loopCount = 1; public Test() { } public int read(CharBuffer cb) { if (loopCount == 1){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; cb.append("aa bb cc "); loopCount++;return 1; }//僅僅在第一次和第六次給CharBuffer添加3個(gè)數(shù)據(jù) if (loopCount == 2){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; }//其他的時(shí)候返回1,但是并不往Buffer中存放數(shù)據(jù),來(lái)騙被調(diào)用者h(yuǎn)asNext(),來(lái)觀察出現(xiàn)了什么現(xiàn)象 if (loopCount == 3){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; } if (loopCount == 4){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; } if (loopCount == 5){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; } if (loopCount == 6){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; cb.append("oo pp qq "); loopCount++; return 1; } if (loopCount == 7){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; } if (loopCount == 8){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; } if (loopCount == 9){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; loopCount++; return 1; } if (loopCount == 10){ out.println("進(jìn)入read執(zhí)行第" + readCount + "次"); readCount++; return -1; } return 1; } public static void main(String[] args) { int a = 1;//外層循環(huán)的次數(shù) Scanner s = new Scanner(new Test()) ; while(s.hasNext()){//這個(gè)hasNext()方法會(huì)調(diào)用read()方法的 out.println("第" + a + "次執(zhí)行外層循環(huán)"); a ++; System.out.println("從cb中讀出 " + s.next()); } } }
以上demo的運(yùn)行結(jié)果為:
進(jìn)入read執(zhí)行第1次
第1次執(zhí)行外層循環(huán)
從cb中讀出 aa
第2次執(zhí)行外層循環(huán)
從cb中讀出 bb
第3次執(zhí)行外層循環(huán)
從cb中讀出 cc
進(jìn)入read執(zhí)行第2次
進(jìn)入read執(zhí)行第3次
進(jìn)入read執(zhí)行第4次
進(jìn)入read執(zhí)行第5次
進(jìn)入read執(zhí)行第6次
第4次執(zhí)行外層循環(huán)
從cb中讀出 oo
第5次執(zhí)行外層循環(huán)
從cb中讀出 pp
第6次執(zhí)行外層循環(huán)
從cb中讀出 qq
進(jìn)入read執(zhí)行第7次
進(jìn)入read執(zhí)行第8次
進(jìn)入read執(zhí)行第9次
進(jìn)入read執(zhí)行第10次
當(dāng)調(diào)用s.hasNext()時(shí),程序會(huì)判斷字符緩沖區(qū)中是否還有未讀字符,如果有,則返回true,調(diào)用s.next()時(shí),返回未讀字符串第一個(gè)空格前的所有字符。如果緩沖區(qū)中沒(méi)有未讀字符,則調(diào)用Readable.read()方法,向字符緩沖區(qū)中放入字符,Readabel.read()返回-1之外的任何整數(shù),當(dāng)字符緩沖區(qū)沒(méi)有未讀字符時(shí),都將會(huì)繼續(xù)調(diào)用Readable.read()方法,直到Readable.read()方法返回-1,才會(huì)結(jié)束while循環(huán)體。
8 Runnable實(shí)現(xiàn)該接口的類必須實(shí)現(xiàn)run()方法,run()方法的實(shí)現(xiàn)將在新的線程中執(zhí)行;
Thread類實(shí)現(xiàn)了Runnable接口,所以一個(gè)類通過(guò)繼承Thread類實(shí)現(xiàn)多線程,也是間接的采用實(shí)現(xiàn)Runnable接口。
package com.heisenberg.Learn; import static java.lang.System.*; public class Test implements Runnable{ @Override public void run() { for (int i = 0 ; i< 10; i++) { out.println("新線程中的第" + i + "次循環(huán)"); } } public static void main(String[] args) { Thread newThread = new Thread(new Test()); newThread.start(); for (int i = 0 ; i< 10; i++) { out.println("main方法中的第" + i + "次循環(huán)"); } } }
可能的一種運(yùn)行結(jié)果為:
main方法中的第0次循環(huán)
main方法中的第1次循環(huán)
新線程中的第0次循環(huán)
新線程中的第1次循環(huán)
main方法中的第2次循環(huán)
main方法中的第3次循環(huán)
main方法中的第4次循環(huán)
main方法中的第5次循環(huán)
main方法中的第6次循環(huán)
main方法中的第7次循環(huán)
main方法中的第8次循環(huán)
main方法中的第9次循環(huán)
新線程中的第2次循環(huán)
新線程中的第3次循環(huán)
新線程中的第4次循環(huán)
新線程中的第5次循環(huán)
新線程中的第7次循環(huán)
新線程中的第8次循環(huán)
新線程中的第9次循環(huán)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68311.html
摘要:中的枚舉是一個(gè)類,所以枚舉也可一后構(gòu)造函數(shù)和其他的方法只是枚舉繼承了類,所以它不能再繼承其它的類。如果給每個(gè)枚舉值指定屬性,則必須給枚舉類提供枚舉值屬性對(duì)應(yīng)數(shù)據(jù)類型的構(gòu)造方法。紅色藍(lán)色白色運(yùn)行的結(jié)果為藍(lán)色 二、類 1、Enum 枚舉 java 語(yǔ)言所有枚舉類型的公共類; 枚舉用來(lái)替換使用常量表示列入顏色、方式、類別等數(shù)量有限,形式離散有表示明確的量; 枚舉是類型安全的,超出枚舉類型的...
摘要:一接口能夠被添加字符序列和字符的對(duì)象。對(duì)于多線程訪問(wèn)而言沒(méi)必要是安全的。是值的一個(gè)可讀序列。此接口對(duì)許多不同種類的序列提供統(tǒng)一的只讀訪問(wèn)。如果該對(duì)象小于等于或大于指定對(duì)象,則分別返回負(fù)整數(shù)零或正整數(shù)。 一、接口 1、Appendable 能夠被添加字符序列(CharSequence)和字符(char)的對(duì)象。CharSequence已知實(shí)現(xiàn)的類有:CharBuffer、Segment...
摘要:一依賴剛開(kāi)始少這個(gè)包創(chuàng)建索引失敗官方文檔并沒(méi)有給這個(gè)提示二開(kāi)始之前的準(zhǔn)備官方文檔連接操作所用到的實(shí)體類三關(guān)于索引的操作官方文檔新增索引索引名稱分片副本內(nèi)容查詢指定索引索引名稱刪除索引四關(guān)于文檔的操作官方文檔創(chuàng)建文檔索引名稱前 一、Maven依賴 org.elasticsearch elasticsearch 7.1.0...
摘要:如果需要支持類的動(dòng)態(tài)加載或需要對(duì)編譯后的字節(jié)碼文件進(jìn)行解密操作等,就需要與類加載器打交道了。雙親委派模型,雙親委派模型,約定類加載器的加載機(jī)制。任何之類的字節(jié)碼都無(wú)法調(diào)用方法,因?yàn)樵摲椒ㄖ荒茉陬惣虞d的過(guò)程中由調(diào)用。 jvm系列 垃圾回收基礎(chǔ) JVM的編譯策略 GC的三大基礎(chǔ)算法 GC的三大高級(jí)算法 GC策略的評(píng)價(jià)指標(biāo) JVM信息查看 GC通用日志解讀 jvm的card table數(shù)據(jù)...
摘要:反射學(xué)習(xí)的靈魂我們從最初的,到面向?qū)ο蟛糠?,我們可以將代碼在計(jì)算機(jī)中經(jīng)歷的階段分為三部分源代碼階段類對(duì)象階段運(yùn)行時(shí)階段而我們知道,中一個(gè)類在源代碼階段,是存儲(chǔ)在硬盤(pán)中的,而編譯后,就已經(jīng)被加載到內(nèi)存中區(qū),那么有沒(méi)有一種方法可以在這種情況下 反射:Web學(xué)習(xí)的靈魂 我們從最初的 javac -HelloWorld.java,到面向?qū)ο蟛糠?,我們可以將Java代碼在計(jì)算機(jī)中經(jīng)歷的階段分為三...
閱讀 2091·2021-09-29 09:35
閱讀 695·2021-09-08 09:36
閱讀 3404·2021-09-03 10:30
閱讀 2120·2019-08-30 14:21
閱讀 2920·2019-08-30 11:18
閱讀 3323·2019-08-29 17:31
閱讀 3150·2019-08-29 17:29
閱讀 1318·2019-08-29 17:13