ice world

          There is nothing too difficult if you put your heart into it.
          posts - 104, comments - 103, trackbacks - 0, articles - 0

          經常有的朋友因為各種原因“顯示桌面”的快捷按鈕丟失、或無法正常使用,下面介紹一個小方法可以找回“顯示桌面”快捷方式。 開始 - 運行,輸入“regsvr32 /n /i:u shell32”,確定,看看快速啟動欄里是不是有了“顯示桌面”快捷方式。

          posted @ 2011-04-13 16:11 IceWee 閱讀(576) | 評論 (0)編輯 收藏

          今天上午在Virtual PC中裝了個番茄花園的XP SP3,安裝完成后發現桌面上多了個空的鏈接文件夾,刪除后再次啟動IE依舊自動創建,下面是徹底刪除的解決方法:打開IE,在收藏夾中刪除“鏈接”文件夾并關閉。依次選擇“開始→運行”,在“運行”對話框中輸入“regedit”,打開注冊表編輯器,找到HKEY_CURRENT_USER\Software\Microsoft
          \Internet Explorer\Toolbar項,在右側欄中找到“LinksFolderName”并雙擊,將鍵值由“鏈接”改為一個空格。

          關閉注冊表編輯器,再次運行IE,此時“鏈接”文件夾已經被徹底刪除了。

          posted @ 2011-04-13 15:55 IceWee 閱讀(438) | 評論 (0)編輯 收藏

          “開始”,“所有程序”,找到“Windows live”下面的“Winodws Live Messenger”,右擊此程序選擇屬性--兼容性?D將“以兼容模式運行這個程序”勾上,在下拉菜單中選擇Windows Vista(Service Pack 2)即可,之后重啟解決。

          posted @ 2011-04-13 15:47 IceWee 閱讀(178) | 評論 (0)編輯 收藏

          標題有點長,可能有點語病,先別管那么多!
          首先看下面的這段代碼:
          public class LocalInnerClassTest{
                
          public static void main(String[] args){
                   Outer obj
          =new Outer();          //生成一個外部類對象
                   SuperInner si=obj.outer();        //調用外部類中的outer()方法,返回一個SuperInner類型對象賦值給si
                  si.m1();             //調用被覆蓋的方法m1(),輸出:Inner's m1() 20
               }

          }


          /**
          *定義一個接口SuperInner,內部定義一個抽象方法m1(),無返回類型
          */

          interface SuperInner{
               
          public void m1();
          }


          /**
          *定義一個類Outer,內部只定義一個方法outer(),返回類型為SuperInner
          */

          class Outer{
               
          public SuperInner outer(){
                  
          int a=10;                   //方法中定義一個局部變量a,并賦值為10
                  final int b=20;          //再定義一個final局部變量b,初始化為20

                  
          class Inner implements SuperInner{              //在outer()方法中定義一個局部內部類Inner,實現接口SuperInner
                     public void m1(){    //類中只有一個覆蓋接口SuperInner的方法m1()
                        System.out.println("Inner's m1()"+a);    //編譯報錯
                        System.out.println("Inner's m1() "+b);    //編譯通過,輸出:Inner's m1() 20
                     }

                 
           }

                  
          return new Inner();
               }

          }




          我們先從主方法開始看代碼的執行順序,先生成一個Outer類對象obj,obj調用本類中方法outer();程序開始跳到outer()方法內執行程序語句,先后生成局部變量a和b,再定義一個局部內部類Inner,返回一個SuperInner類型的對象。將返回的SuperInner類型對象地址傳給SuperInner類型對象si。si再調用m1()方法,因為已經在局部內部類中覆蓋了接口中的m1()方法,所以將調用局部內部類中的m1()方法,程序跳到局部內部類中m1()方法內執行程序語句,先輸出一段字符串和a,結果編譯報錯,先 將這條程序語句隱藏,執行下面的語句,你會發現編譯通過而且輸出Inner's m1() 20!

          為什么會這樣呢?大家都知道局部變量僅僅在一個范圍內有效,在方法調用完就被內存釋放,在Outer類對象obj調用outer()方法時,a和b才產生,調用結束后被內存釋放,那么b這個值也就不復存在了,為什么還會輸出20呢?難道局部變量被final修飾就不會被內存釋放而保留?

          其實有部分操作對于程序員是透明的,那是JAVA語言開發者的小把戲,在定義a和b 時JVM(JAVA虛擬機)做了程序員看不到的操作,他將b拷貝了一份給局部內部類,也就是說JVM在局部內部類中定義了一個final int b=20;這個操作程序員是不知道的!當調用m1()方法時輸出的20并不是原來outer()方法中定義的b,而僅僅是JVM拷貝的一個副本。那么為什么a沒被打印出呢?那是因為JVM并沒有拷貝它,因為沒有final修飾,說明它可以被修改,如果把a 改為 a++,此時JVM就不知道拷貝a還是a++了,所以對于無final修飾的局部變量JVM是不會拷貝傳給局部內部類的,自然無法打輸出!

          posted @ 2007-12-22 11:45 IceWee 閱讀(2149) | 評論 (1)編輯 收藏

          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 
          主站蜘蛛池模板: 安乡县| 宝应县| 渝中区| 宾川县| 伊春市| 溆浦县| 深水埗区| 二连浩特市| 佛坪县| 潜江市| 新龙县| 云霄县| 华宁县| 武冈市| 临清市| 丰城市| 郴州市| 遂昌县| 颍上县| 紫云| 泉州市| 榆树市| 台江县| 卫辉市| 庄浪县| 石台县| 茶陵县| 西贡区| 宿松县| 尉氏县| 石屏县| 伽师县| 阿瓦提县| 来安县| 建平县| 垣曲县| 达孜县| 三原县| 定南县| 天门市| 阿拉善盟|