<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                前面我們學習了類的定義,我們不難理解,定義類其實就是在定義類中的成員. 成員包括成員變量和成員函數. 說到成員變量,我們很自然會想到前面提到過的局部變量,那么它們之間有什么區別呢? 首先我們定義一個People類: ~~~ class People//定義一個People類 { String name;//姓名屬性 int age;//年齡屬性 char sex; void run()//跑的方法 { System.out.println(name+"開始跑步了."); } void information() { System.out.println("姓名:"+name+";\n性別:"+sex+";\n年齡:"+age+"."); } } ~~~ 然后我們從四個方面來分析下這兩種變量的區別. **1.從它們的定義環境來分析**,我們看一段代碼. ~~~ class PeopleTest { public static void main(String[] args) { People kobe = new People();//創建一個People的對象kobe String name = "jordan"; int age = 49; char sex = '男'; kobe.name = "KOBE"; kobe.age = 37; kobe.sex = '男'; kobe.information(); kobe.run(); } } ~~~ 我們可以看到People類中我們定義了name,age,sex這三個變量就是成員變量;而在main方法中我們定義了kobe,name,age,sex這四個變量都是局部變量,那么很明顯就看出了它們的不同之處: 成員變量定義在類中,整個類中都可以訪問. 局部變量定義在函數,語句,局部代碼塊中,只在所屬區域有效. **2,從它們在內在中存放形式來分析**: 聯系上一節以及4.3節的函數的內存分配兩節我們很自然知道這兩種變量的區別在于: 成員變量存在于堆內存的對象中. 局部變量存在于棧內存的方法中. **3,從它們的默認初始化來分析**,我們運行上面的代碼: ~~~ class PeopleTest { public static void main(String[] args) { People kobe = new People();//創建一個People的對象kobe String name = "jordan"; int age = 49; char sex = '男'; kobe.name = "KOBE"; kobe.age = 37; kobe.sex = '男'; kobe.information(); kobe.run(); System.out.println("name:"+name+";\nsex:"+sex+";\nage:"+age+"."); } } ~~~ 結果如下: ![](https://box.kancloud.cn/2016-05-18_573c41ae91812.jpg) 我們再把該代碼稍做修改: ~~~ class PeopleTest { public static void main(String[] args) { People kobe = new People();//創建一個People的對象kobe String name; int age; char sex; kobe.name = "KOBE"; kobe.age = 37; kobe.sex = '男'; kobe.information(); kobe.run(); System.out.println("name:"+name+";\nsex:"+sex+";\nage:"+age+"."); } } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c41aeb3a06.jpg) 我們看出一個很顯然的區別就是: 成員變量都有默認初始化值. 局部變量沒有默認初始化值. 所以我們在定義成員變量時,如果我們需要特定的初始值,我們就一定要顯性初始化具體值.對于局部變量,如果我們不初始化,當操作該變量時編譯會提示未初始化的錯誤. **4.從它們的生命周期來分析**,我們再對上面的代碼進行一下改動: ~~~ class PeopleTest { public static void main(String[] args) { People kobe = new People();//創建一個People的對象kobe String name = "jordan"; { int age = 49; char sex = '男'; System.out.println("name:"+name+";\nsex:"+sex+";\nage:"+age+".");//可以打印出三個局部變量的值 } kobe.name = "KOBE"; kobe.age = 37; kobe.sex = '男'; kobe.information(); kobe.run(); System.out.println("name:"+name+";\nsex:"+sex+";\nage:"+age+".");//報錯,找不到sex和age這兩個變量 } } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c41aec81d0.jpg) 而當我們把最后一句打印語句注釋之后的結果: ![](https://box.kancloud.cn/2016-05-18_573c41aeda80a.jpg) 我們可以看到: 成員變量隨著對象的創建而存在,隨著對象的消失而消失. 局部變量隨著所屬區域的執行而存在,隨著所屬區域的結束而釋放. 最后,我們再來看一個比較需要注意的地方,那就是成員變量和局部變量的同名情況. 我們把People類修改一下: ~~~ class People//定義一個People類 { String name;//姓名屬性 int age;//年齡屬性 char sex; void run()//跑的方法 { System.out.println(name+"開始跑步了."); } void information() { String name = "JAMES"; int age = 29; char sex = '女'; System.out.println("姓名:"+name+";\n性別:"+sex+";\n年齡:"+age+"."); } } ~~~ 結果: ![](https://box.kancloud.cn/2016-05-18_573c41aeedc9c.jpg) 我們看到在打印出了局部變量的值,這是由于局部變量在棧的方法中,程序會把值直接賦值給局部變量,如果當在棧中找不到,則到堆內存中尋找指定的成員變量.這一點在以后的操作中一定要小心. 成員變量都有默認初始化值. 局部變量沒有默認初始化值.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看