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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 黑河市| 浦江县| 阳城县| 呈贡县| 晋江市| 绿春县| 长宁区| 临沧市| 绥江县| 青铜峡市| 崇信县| 湟中县| 南华县| 武胜县| 东山县| 沛县| 桃园市| 神农架林区| 信宜市| 陆川县| 平陆县| 翁源县| 浑源县| 建阳市| 应城市| 库车县| 辽阳市| 济源市| 大姚县| 灵寿县| 灵丘县| 武陟县| 罗山县| 云安县| 榆中县| 年辖:市辖区| 南开区| 疏附县| 大渡口区| 濉溪县| 吉林市|