亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java中成員變量與局部變量區別分析

2019-11-26 15:19:44
字體:
來源:轉載
供稿:網友

本文實例分析了java中成員變量與局部變量區別。分享給大家供大家參考。具體分析如下:

成員變量:在這個類里定義的私有變量,屬于這個類。
創建以及使用成員變量

復制代碼 代碼如下:
public class Person {
    String name;
    String Sex;
    int age;
    double Height;
   
    public static void main(String arges[])
    {
        Person p=new Person();
        p.name="小黃";
        p.Sex="男";
        p.age=20;
        p.Height=1.7;
        System.out.println("姓名:"+p.name+",性別"+p.Sex+",年齡:"+p.age+",年齡:"+p.Height);
    }
}

成員變量初始化過程

一、類的初始化

對于類的初始化:類的初始化一般只初始化一次,類的初始化主要是初始化靜態成員變量。
類的編譯決定了類的初始化過程。
編譯器生成的class文件主要對定義在源文件中的類進行了如下的更改:
1)先按照靜態成員變量的定義順序在類內部聲明成員變量。
2)再按照原java類中對成員變量的初始化順序進行初始化。
一個java類和編譯后的class對應的轉換如下:
源文件:

復制代碼 代碼如下:
public class Person{
  public static String name="張三";
  public static int age;
  static{
       age=20;
    System.out.println("初始化age");
  }
  public static String address;
  static{
    address="北京市";
    age=34;
  }
  public static void main(String[] args) {
                   System.out.println(name);
                   System.out.println(age);
                   System.out.println(address);
         }
}

當java源代碼轉換成一個class文件后,其轉換成類似下面的代碼:
復制代碼 代碼如下:
public class Person{
  public static String name;
  public static int age;
  public static String address;
  static{
    name="張三";
    age=20;
    System.out.println("初始化age");
    address="北京市";
    age=34;
  }
  public static void main(String[] args) {
                   System.out.println(name);
                   System.out.println(age);
                   System.out.println(address);
         }
}

初始化順序依據轉換后對應的class類成員變量的初始化順序依次執行,所以所有的靜態成員變量都是先聲明,后執行賦值的,而且賦值的順序也是依照源代碼對靜態成員變量初始化的順序進行的,注意:定義一個成員變量并直接初始化與在靜態代碼塊中進行初始化是等價的,都是依據它們在源代碼中定義的順序進行的。

局部變量

局部變量:在方法體里創建,在方法體外訪問不到這個變量。
局部變量的創建與使用(局部變量必須賦值,成員變量可以不賦值)
 

復制代碼 代碼如下:
public class Person {
    public static void main(String arges[])
    {
        String name="小黃";
        String Sex="男";
        int age=20;
        double Height=1.70;
        System.out.println("姓名:"+name+",性別"+Sex+",年齡:"+age+",年齡:"+Height);
    }
}

看例子
復制代碼 代碼如下:
public class PassTest {
 public static void main(String args[]) {
  StringBuffer a = new StringBuffer("a");
  StringBuffer b = new StringBuffer("b");
  a(a, b);
  System.out.println(a);
  System.out.println(b);
 
  PassTest p = new PassTest();
 
  p.c();
 }
 static void a(StringBuffer a, StringBuffer b) {
  a = a.append(b);
  b = a;
 }
}

按照局部變量的使用范圍來說 結果應該是 a b 但是 實際上輸出的確實 ab b 請問為什么?

傳遞參數引用的問題吧.引用的話,傳遞的應該是相同引用的副本.

a方法里邊b=a是改變副本b引用=a,但是對main里的b沒有影響.
a = a.append(b); 主要是a.append(b);這句改變了a引用指向的值,因為main里的a也是指向同一對象,所以輸出為ab b
如果a = a.append(b);改為 a = new StringBuffer("ab"); 將輸出a b

再看下面兩段程序:
程序一:

復制代碼 代碼如下:
public class Variable
{
int i;
void test()
{
   int j=8;
   if(j==i)
    System.out.println("相等");
   else
    System.out.println("不相等");
}
public static void main(String[] args)
{
   Variable v=new Variable();
   v.test();
}
}

程序二:
復制代碼 代碼如下:
public class Variable
{
   void test()
{
   int i;
   int j=8;
   if(j==i)
    System.out.println("相等");
   else
    System.out.println("不相等");
}
public static void main(String[] args)
{
   Variable v=new Variable();
   v.test();
}
}

第一個程序很正常,編譯時不會出錯。第二個程序編譯時會提示如下錯誤:
D:Programjavatest>javac Variable.java
Variable.java:9: 可能尚未初始化變量 i
                if(j==i)
                      ^

錯誤

之所以會出現這樣的錯誤是因為:成員變量有默認值,(被final修飾且沒有static的必須顯式賦值),局部變量不會自動賦值

類體分為兩部分。變量定義部分所定義的變量被稱為類的成員變量,在方法體中定義的變量和方法的參數都被稱為局部變量

局部變量和成員變量的區別

局部變量描述的是這個方法體內的屬性,而成員變量描述的是這個對象里的屬性。
成員變量可以被public、protected、default、private、static、final修飾符修飾,局部變量只能被final修飾符修飾。

成員變量在堆里進行創建,局部變量在棧里進行創建。
局部變量是系統默認值,局部變量沒有系統默認值,必須手動賦值

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本国产一区二区三区| 韩国视频理论视频久久| 一本色道久久综合狠狠躁篇怎么玩| 久久久久久久久久久久久久久久久久av| 精品二区三区线观看| 91中文字幕在线观看| 欧美在线亚洲一区| 中文字幕日韩电影| 九九热这里只有精品免费看| 久久视频中文字幕| 亚洲黄色片网站| 97精品一区二区三区| 中文一区二区视频| 日本中文字幕成人| www.久久久久久.com| 国产精品丝袜久久久久久高清| 亚洲视频在线观看| 久久中文字幕视频| 在线观看日韩www视频免费| 亚洲欧美综合图区| 久久国产精品久久久久| 国产精品99久久久久久人| 欧美激情欧美狂野欧美精品| 国产精品久久9| 中文日韩电影网站| 亚洲成人a级网| 国产成人精品视| 亚洲国产日韩欧美在线动漫| 日韩久久免费视频| 成人在线视频福利| 北条麻妃一区二区三区中文字幕| 精品国产依人香蕉在线精品| 精品国产一区二区三区久久| 成人激情视频在线观看| 亚洲va欧美va国产综合久久| 久久久久久午夜| 欧美日韩福利在线观看| 97国产精品视频人人做人人爱| 日本成人免费在线| 精品国偷自产在线视频| 亚洲国内高清视频| 欧美在线视频一二三| 国产精品福利在线观看网址| 日韩免费中文字幕| 亚洲一区二区三区毛片| 成人综合网网址| 亚洲精品国精品久久99热| 亚洲国产成人av在线| 丝袜亚洲另类欧美重口| 国产丝袜精品视频| 精品久久久久久久中文字幕| 51精品国产黑色丝袜高跟鞋| 亚洲一级免费视频| 九九热最新视频//这里只有精品| 91大神在线播放精品| 久久免费国产视频| 最好看的2019年中文视频| 成人性生交大片免费观看嘿嘿视频| 欧美国产日韩视频| 永久555www成人免费| 久久久久成人网| 奇米4444一区二区三区| 久久精品亚洲94久久精品| 亚洲毛片在线免费观看| 92国产精品久久久久首页| 国产噜噜噜噜久久久久久久久| 国产91在线视频| 国语自产精品视频在线看抢先版图片| 日韩在线观看av| 久久久久久久激情视频| 九九视频这里只有精品| 亚洲图片制服诱惑| 日韩av在线导航| 日本乱人伦a精品| 欧美极品少妇xxxxⅹ免费视频| 亚洲淫片在线视频| 日本成人免费在线| 亚洲资源在线看| 成人免费视频a| 国产亚洲美女精品久久久| 精品综合久久久久久97| 久久精品国产亚洲7777| 欧美精品电影免费在线观看| 久久理论片午夜琪琪电影网| 95av在线视频| 亚洲伊人第一页| 国产亚洲欧美日韩一区二区| 国产一区二区三区四区福利| 成人免费在线视频网站| 这里只有精品视频在线| 国产精品日韩一区| 亚洲女性裸体视频| 97精品伊人久久久大香线蕉| 欧美精品日韩三级| 亚洲精品电影在线观看| 欧美性猛交xxxx黑人| 日本欧美爱爱爱| 综合136福利视频在线| 日本精品久久久| 日韩中文字幕国产精品| 亚洲欧美日韩中文在线制服| 亚洲欧美一区二区三区情侣bbw| 91在线免费视频| 91在线视频九色| 欧美黑人视频一区| 亚洲视频在线观看网站| 亚洲嫩模很污视频| 97精品欧美一区二区三区| 亚洲国产精品久久91精品| 亚洲片国产一区一级在线观看| 亚洲综合成人婷婷小说| 欧美精品亚州精品| 国产精品视频最多的网站| 91成人国产在线观看| 国产一区二区三区四区福利| 亚洲第一偷拍网| 亚洲精品美女网站| 成人激情春色网| 色视频www在线播放国产成人| 欧美怡春院一区二区三区| 国产91精品久久久久久久| 亚洲男人天堂2024| 亚洲自拍小视频免费观看| 国产精品久久一区| 中文字幕亚洲二区| 日韩毛片中文字幕| 日韩在线视频一区| 亚洲免费精彩视频| 国产精品久久97| 日韩在线观看免费高清完整版| 欧美性极品xxxx做受| 欧美极品欧美精品欧美视频| 精品国产老师黑色丝袜高跟鞋| 日韩一级裸体免费视频| 国产精品久久久999| 国产精品久久久久久av福利软件| 亚洲jizzjizz日本少妇| 欧美精品18videos性欧美| 国产精品www| 久久69精品久久久久久久电影好| 精品国内亚洲在观看18黄| 欧美日韩久久久久| 色777狠狠综合秋免鲁丝| 伊人久久免费视频| 久久久久久噜噜噜久久久精品| 亚洲精品久久久一区二区三区| 亚洲欧美国产精品va在线观看| 欧美在线激情视频| 欧美激情久久久久| 日韩精品高清视频| 欧美日韩国产丝袜另类| 亚洲天堂av在线免费观看| 欧美丰满老妇厨房牲生活| 欧美性视频网站| 成人啪啪免费看| 欧美插天视频在线播放| 日韩欧美中文字幕在线播放| 欧美xxxx18性欧美| 国产精品视频区1| 国产91精品久久久| 精品国产网站地址| 国产男人精品视频| 国产一区二区三区在线观看网站| 亚洲精品黄网在线观看|