java世界
          有些人注定要生活在彼岸,可以親近可以愛憐,甚至可以窮盡一生去思念,只是無法觸及有些距離,注定不能跨越只能倆倆相望,就像有些愛只能養在心里長在眼中,不能捧在手里放在身邊,注定只能邂逅無法遭遇!
          posts - 12,comments - 15,trackbacks - 0
          1.關于參數的傳遞
          class ValHold{
          public int i = 10;
          }
          public class ObParm{
          public void amethod(){
          ValHold v = new ValHold();
          another(v);
          System.out.println(v.i);
          }
          public void another(ValHold v){
          v.i = 20;
          ValHold vh = new ValHold();
          v =vh;
          System.out.println(v.i);
          }
          public static void main(String[] argv){
          ObParm o = new ObParm();
          o.amethod();
          }
          }
          此題的答案是10,20,為什么不是10,10呢?
          這樣解釋吧,按照sun官方的說法:當一個引用變量作為參數傳遞給一個方法時, 在這個方法內可以改變變量的值,即改變引用指向的對象,(本題中將vh賦給v)但是方法的調用結束后,改變量恢復原來的值,即變量仍然指向原來的對象。 (即another(v)調用結束之后,v又回復到第一次ValHold v = new ValHold();時指向的地址空間。) 但是如果在方法內改變了引用指向的對象的數據(屬性),那么當方法的調用結束后,盡管引用仍然指向原來的對象,這個對象的某個屬性已經被改變了(v的i值在 執行v.i=20的時候就已經被改變了,所以調用another結束后,v.i已經變成了20) .
          2.關于內部類
          public class InOut{
          String s= new String("Between");
          public void amethod(final int iArgs) {
          int iam;
          class Bicycle{
          Bicycle() {
          System.out.println(s); //這兩句話可以,也就是說可以訪問s
          System.out.println(iArgs); //和final int 常量
          //System.out.println(iOther);
          }
          }
          new Bicycle();
          }
          public void another(){
          int iOther;
          }
          public static void main(String[] args) {
          InOut inout= new InOut();
          inout.amethod(22);
          }
          }
          Inner class能夠存取外部類的所有實例變量----無論這些實例變量有什么樣的存取控制符(比如private),就像類中的方法能夠存取方法所在類的所有變量一樣;如果inner class定義在方法中,則inner class能夠存取方法所在的類中的實例變量,也能存取該方法中的局部變量,但該局部變量必須是final的,也就是只能訪問方法中的常量.(上面所說的都是普通內部類,不是靜態內部類的情況).
          public class Testinner {
          int t=10;
          public void a() {
          final int u =90;
          class InMethod { //方法中內部類
          InMethod() { //內部類的構造方法
          System.out.println("u="+u); //封裝方法內的變量必須是final才能訪問到!
          System.out.println("t="+t); //外部類的變量可以任意訪問!
          }
          }
          new InMethod();//必須在方法a()中創建內部類對象之后,Testinner對象才能通過 a()訪問到InMethod類
          }
          public static void main (String[] args) {
          Testinner t= new Testinner();
          t.a();
          }
          }
          輸出:u=90 ,t=10
          方法中的內部類不可以是static的!如果一個內部類是靜態的(當然只能是類中的內部類啦),那么這個類就自動的成為頂級(top-level)類即普通的類。靜態內部類中的方法(無論是靜態的方法還是非靜態的方法)只能直接訪問外部類中的靜態成員,要訪問外部類中的非靜態成員,則必須創建外部類的對象。
          posted on 2005-11-17 09:33 安德爾斯 閱讀(209) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 特克斯县| 麻江县| 金坛市| 桑植县| 正安县| 射阳县| 贵州省| 西乌| 曲阜市| 无极县| 营口市| 晴隆县| 思南县| 伊吾县| 黔西| 读书| 化隆| 横山县| 深州市| 宜兰县| 北流市| 郧西县| 克山县| 宁晋县| 道孚县| 肇州县| 固原市| 旬邑县| 临朐县| 白河县| 上饶县| 合作市| 吉林省| 郁南县| 介休市| 农安县| 建阳市| 建瓯市| 武胜县| 汕尾市| 遂宁市|