Java的Inner Class的例項及作用分析
1 首先看程式碼
/** DataStructure.java
*
* Created on 2008年3月1日, 上午10:37
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package hiber;
/**
*
* @author rulinma
*/
publicclass DataStructure {
//create an array
privatefinalstaticint SIZE =15;
private
public DataStructure() {
//fill the array with ascending integer values
for (int i =0; i < SIZE; i++) {
arrayOfInts[i] = i;
}
}
publicvoid printEven() {
//print out values of even indices of the array
InnerEvenIterator iterator
while (iterator.hasNext()) {
System.out.println(iterator.getNext() +"");
}
}
//inner class implements the Iterator pattern
privateclass InnerEvenIterator {
//start stepping through the array from the beginning
privateint next =0;
//check if a current element is the last in the array
return (next <= SIZE -1);
}
publicint getNext() {
//record a value of an even index of the array
int retValue = arrayOfInts[next];
//get the next even element
next +=2;
return retValue;
}
}
publicstaticvoid main(String s[]) {
//fill the array with integer values and print out only values of even indices
DataStructure ds =new DataStructure();
ds.printEven();
}
}
2 執行結果:
init:
deps-jar:
compile-single:
run-single:
0
2
4
6
8
10
12
14
生成成功(總時間:1 秒)
3 作用分析
3.1 內部類的使用可以有效避免外界對InnerEvenIterator 類的訪問,滿足了面向物件的封裝性。
3.2 內部類InnerEvenIterator可以直接使用上面定義的 private int[] arrayOfInts = new int[SIZE];
Java編譯器在建立內部類物件時,隱式的把其外部類物件的引用也傳了進去並一直儲存著。這樣就使得內部類物件始終可以訪問其外部類物件
相關推薦
Java的Inner Class的例項及作用分析
1 首先看程式碼 /**//* * DataStructure.java * * Created on 2008年3月1日, 上午10:37 * * To change this template, choose Tools | Template Manager * a
證書的應用之一 —— TCP&SSL通訊例項及協議分析(中)
SSL建立握手連線目的: 1.身份的驗證,client與server確認對方是它相連線的,而不是第三方冒充的,通過證書實現 2.client與server交換session key,用於連線後資料的傳輸加密和hash校驗 簡單的SSL握手連線過程(僅Ser
通過例項及原始碼分析關於SpringBoot啟動類啟動時自動配置問題
SpringBoot啟動類大家都不陌生,只要在main方法上增加一個@SpringBootApplication註解,就可以啟動了。 我們點開該註解 其中關鍵註解為@EnableAutoConfiguration,再次跟進 其中引入了EnableA
java中的構造方法的使用及作用分析
java中構造方法是一個重要的概念,初學時有人會對此構造方法的使用特別是其作用不清楚,下面我就來談談我對java中構造方法的理解,有不對或不清楚的地方希望各位看官提出意見,謝謝! 一.構造方法的定義宣
JavaScript執行環境及作用域鏈例項分析
1、執行環境: 每個執行環境都有一個與之關聯的變數物件,環境中定義的所有變數和函式都儲存在這個物件中。 執行環境包括全域性執行環境和函式執行環境。 全域性執行環境是最外圍的一個執行環境,在瀏覽器中,全域性執行環境被認為是是window物件,所有全域性變數和屬性都是作為window
【discuzX2】/source/class/class_core.php文件中數據庫操作類DB及db_mysql分析
mathjax fetch bus _for pre 影響 str sql_mod 進行 <?php /** * Discuz MySQL 類的支持 程序中一般不直接使用此類,而是使用DB類,DB類對db_mysql類中的方法又進行了二次封裝 * *
phpstorm+xdebug作用解釋及原理分析
今天學習了php 的 xdebug除錯工具,感覺很強大,從一點不會到慢慢了解,翻閱了很多資料,也算是跋山涉水,翻山越嶺了,為了避免再有像我這樣的新手學習此知識點時遇到困惑,特把今天看到的一些優秀文章貼下來,供大家參考 xdebug使用參考文件 https://xdebug
c#中static的作用及程式碼分析
說明2:C# 是面向物件的程式設計語言,每一個函式都屬於一個類。 當一個方法被宣告為Static時,這個方法是一個靜態方法,編譯器會在編譯時保留這個方法的實現。也就是說,這個方法屬於類,但是不屬於任何成員,不管這個類的例項是否存在,它們都會存在。就像入口函式Static void Main,因為它是靜態函式,
Netty入門例項及分析
import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel
SparkR安裝部署及資料分析例項
1. SparkR的安裝配置 1.1. R與Rstudio的安裝 1.1.1. R的安裝 我們的工作環境都是在Ubuntu下操作的,所以只介紹Ubuntu下安裝R的方法: 1) 在/etc/apt/sources.list新增源
Executor執行框架原始碼分析(一)——executor、threadFactory、ThreadPoolExecutor 、Future元件的關係及作用
executor執行框架是JDK1.5新增的,用於專注於任務執行的框架。其最大的特點就是將任務的建立和任務的執行分離,鬆耦合,已達到最大限度的利用計算機資源(執行緒和記憶體等)。在併發程式設計中,executor是一個必備的工具。 在分析原始碼之前,首先
Springmvc+Apache Camel+Mybatis整合例項及分析
Spring MVC+Apache Camel+Mybatis整合例項及分析 最近在學習camel,公司之前做過的專案使用到了camel進行了很多工作。就連資料庫的操作也是通過camel來完成的。至於用camel來操作資料庫有什麼優點,目前就我自己的體會來說,利用came
註冊 Jdbc 驅動程式的三種方式及Class.forName 的作用
(1)jdbc中註冊驅動,首先匯入對應的包,例如mysql-connector-java-5.0.8-bin.jar。驅動包是java和具體資料庫之間的連線橋樑,由資料庫廠商開發。每一種資料庫對應一款驅動jar,甚至每一個版本的資料庫都有自己對應版本的驅動jar。 (2
Class.forName的作用及用newInstance()和new建立物件的區別
Class.forName(xxx.xx.xx) 返回的是一個類 首先你要明白在java裡面任何class都要裝載在虛擬機器上才能執行。這句話就是裝載類用的(和new 不一樣,要分清楚)。 至於什麼時候用,你可以考慮一下這個問題,給你一個字串變數,它代表一個類的包名和
JAVA反射機制及CLASS.FORNAME的作用及含義
最近由於工作上需要,對reflection做了一番瞭解,以下是學習總結,有不少內容是借鑑的,但已無法找到源文出處,還請原文作者見諒。 Reflection 是Java被視為動態(或準動態)語言的一個關鍵性質。這個機制允許程式在執行時透過Reflection APIs取得任
Java GC 分析,JVM生產環境引數例項及分析,JVM詳細配置
什麼是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作為Java開發者,一般不需要專門編寫記憶體回收和垃圾清理程式碼,對記憶體洩露和溢位的問題,也不需要像C程式設計師那樣戰戰兢兢。這是
JVM系列四:生產環境引數例項及分析
java application專案(非web專案) 改進前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadStac
RRTI的概念以及Class對象作用
eat 有趣的 getclass 2種 init null java虛擬機 class對象 小例子 深入理解Class對象 RRTI的概念以及Class對象作用 認識Class對象之前,先來了解一個概念,RTTI(Run-Time Type Identifi
常用正則表達式爬取網頁信息及HTML分析總結
logfile mpi 開始 order 標題 ear 爬取網頁 常用 enter Python爬取網頁信息時,經常使用的正則表達式及方法。 1.獲取<tr></tr>標簽之間內容 2.獲取<a href..></a>超鏈接
利用python爬取龍虎榜數據及後續分析
登錄 one 可能 股市 .com 爬蟲 但我 由於 相關 ##之前已經有很多人寫過相關內容,但我之前並未閱讀過,這個爬蟲也是按照自己的思路寫的,可能比較醜陋,請見諒! 本人作為Python爬蟲新手和股市韭菜,由於時間原因每晚沒辦法一個個翻龍虎榜數據,所以希望借助爬蟲篩選出