亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中成員變量與局部變量區(qū)別分析

 更新時(shí)間:2015年01月04日 14:18:18   投稿:shichen2014  
這篇文章主要介紹了java中成員變量與局部變量區(qū)別,較為詳細(xì)的分析了java中成員變量與局部變量的功能、用法與區(qū)別,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

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

成員變量:在這個(gè)類(lèi)里定義的私有變量,屬于這個(gè)類(lèi)。
創(chuàng)建以及使用成員變量

復(fù)制代碼 代碼如下:
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);
    }
}

成員變量初始化過(guò)程

一、類(lèi)的初始化

對(duì)于類(lèi)的初始化:類(lèi)的初始化一般只初始化一次,類(lèi)的初始化主要是初始化靜態(tài)成員變量。
類(lèi)的編譯決定了類(lèi)的初始化過(guò)程。
編譯器生成的class文件主要對(duì)定義在源文件中的類(lèi)進(jìn)行了如下的更改:
1)先按照靜態(tài)成員變量的定義順序在類(lèi)內(nèi)部聲明成員變量。
2)再按照原java類(lèi)中對(duì)成員變量的初始化順序進(jìn)行初始化。
一個(gè)java類(lèi)和編譯后的class對(duì)應(yīng)的轉(zhuǎn)換如下:
源文件:

復(fù)制代碼 代碼如下:
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);
         }
}

當(dāng)java源代碼轉(zhuǎn)換成一個(gè)class文件后,其轉(zhuǎn)換成類(lèi)似下面的代碼:
復(fù)制代碼 代碼如下:
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);
         }
}

初始化順序依據(jù)轉(zhuǎn)換后對(duì)應(yīng)的class類(lèi)成員變量的初始化順序依次執(zhí)行,所以所有的靜態(tài)成員變量都是先聲明,后執(zhí)行賦值的,而且賦值的順序也是依照源代碼對(duì)靜態(tài)成員變量初始化的順序進(jìn)行的,注意:定義一個(gè)成員變量并直接初始化與在靜態(tài)代碼塊中進(jìn)行初始化是等價(jià)的,都是依據(jù)它們?cè)谠创a中定義的順序進(jìn)行的。

局部變量

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

復(fù)制代碼 代碼如下:
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);
    }
}

看例子
復(fù)制代碼 代碼如下:
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;
 }
}

按照局部變量的使用范圍來(lái)說(shuō) 結(jié)果應(yīng)該是 a b 但是 實(shí)際上輸出的確實(shí) ab b 請(qǐng)問(wèn)為什么?

傳遞參數(shù)引用的問(wèn)題吧.引用的話,傳遞的應(yīng)該是相同引用的副本.

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

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

復(fù)制代碼 代碼如下:
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();
}
}

程序二:
復(fù)制代碼 代碼如下:
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();
}
}

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

錯(cuò)誤

之所以會(huì)出現(xiàn)這樣的錯(cuò)誤是因?yàn)椋撼蓡T變量有默認(rèn)值,(被final修飾且沒(méi)有static的必須顯式賦值),局部變量不會(huì)自動(dòng)賦值

類(lèi)體分為兩部分。變量定義部分所定義的變量被稱(chēng)為類(lèi)的成員變量,在方法體中定義的變量和方法的參數(shù)都被稱(chēng)為局部變量

局部變量和成員變量的區(qū)別

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

成員變量在堆里進(jìn)行創(chuàng)建,局部變量在棧里進(jìn)行創(chuàng)建。
局部變量是系統(tǒng)默認(rèn)值,局部變量沒(méi)有系統(tǒng)默認(rèn)值,必須手動(dòng)賦值

希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 一篇文章帶你了解java接口與繼承

    一篇文章帶你了解java接口與繼承

    這篇文章主要介紹了Java接口和繼承操作,結(jié)合具體實(shí)例形式分析了Java接口和繼承與使用的相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2021-08-08
  • Intellij IDEA集成JProfiler性能分析工具

    Intellij IDEA集成JProfiler性能分析工具

    作為Java程序員,性能分析是我們必須掌握的技能之一,在性能分析中,JProfiler是一款非常強(qiáng)大的工具,本文就來(lái)介紹一下Intellij IDEA集成JProfiler性能分析工具,就有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Spring Boot發(fā)送郵件詳解

    Spring Boot發(fā)送郵件詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Boot發(fā)送郵件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot+kaptcha實(shí)現(xiàn)驗(yàn)證碼花式玩法詳解

    SpringBoot+kaptcha實(shí)現(xiàn)驗(yàn)證碼花式玩法詳解

    這篇文章主要想和大家聊聊kaptcha的用法,畢竟這個(gè)已經(jīng)有16年歷史的玩意還在有人用,說(shuō)明它的功能還是相當(dāng)強(qiáng)大的,感興趣的小伙伴可以了解一下
    2022-05-05
  • Java實(shí)現(xiàn)PDF打印的解決方案

    Java實(shí)現(xiàn)PDF打印的解決方案

    今天小編就為大家分享一篇關(guān)于Java實(shí)現(xiàn)PDF打印的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建詳細(xì)步驟

    Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建詳細(xì)步驟

    Jenkins是一個(gè)開(kāi)源的自動(dòng)化服務(wù)器,可以用來(lái)輕松地建立持續(xù)集成和持續(xù)交付(CI/CD)管道,這篇文章主要給大家介紹了關(guān)于Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • java代碼如何讀取bootstrap.yml配置信息

    java代碼如何讀取bootstrap.yml配置信息

    這篇文章主要介紹了java代碼如何讀取bootstrap.yml配置信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Sharding-Jdbc 自定義復(fù)合分片的實(shí)現(xiàn)(分庫(kù)分表)

    Sharding-Jdbc 自定義復(fù)合分片的實(shí)現(xiàn)(分庫(kù)分表)

    本文主要介紹了Sharding-Jdbc 自定義復(fù)合分片的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解讀easyexcel中的常用注解

    解讀easyexcel中的常用注解

    這篇文章主要介紹了關(guān)于easyexcel中的常用注解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 詳解Java實(shí)踐之建造者模式

    詳解Java實(shí)踐之建造者模式

    建造者模式是將一個(gè)復(fù)雜的對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。它隱藏了復(fù)雜對(duì)象的創(chuàng)建過(guò)程,它把復(fù)雜對(duì)象的創(chuàng)建過(guò)程加以抽象,通過(guò)子類(lèi)繼承或者重載的方式,動(dòng)態(tài)的創(chuàng)建具有復(fù)合屬性的對(duì)象
    2021-06-06

最新評(píng)論