全局變量和成員變量的區別分析

2021-01-19 電子發燒友
  成員變量

  成員變量是指定維度的成員變量,用於標識某個維度成員。

  簡介由 Analysis Services 內部使用的值,以標識某個維度成員。MemberKeyColumn 屬性指定維度的成員變量。例如,1 到 12 之間的某個數字可以是相應於年中的某個月的成員變量。

  java成員變量和方法 成員變量:在類體的變量部分中定義的變量,也稱為欄位。我們先來看一個Clothes類的成員變量:

  package ch05.sample

  ;public class Clothes

  {

  String id; //實例變量

  private String colorType; //實例變量private int size; //實例變量private static String depart; //類變量final String design=「yangzi」; //常量}

  代碼中的實例變量、類變量、常量都屬於成員變量,那麼其區分的依據是什麼?這與變量的修飾符有關係,也就是上面代碼中的private、static、final等修飾符。

  

  全局變量

  全局變量是編程術語中的一種,源自於變量之分。

  變量分為局部與全局,局部變量又可稱之為內部變量。由某對象或某個函數所創建的變量通常都是局部變量,只能被內部引用,而無法被其它對象或函數引用。

  全局變量既可以是某對象函數創建,也可以是在本程序任何地方創建。全局變量是可以被本程序所有對象或函數引用。一個局部變量在被其它對象引用時,會是一個空值。但全局變量卻不會出現這種情況。

  面向對象語言中的使用

  在現代的面向對象語言如Java,C++,C#,Ruby中,由於變量都是封裝在類裡面的,對別的類不可見,所以已經幾乎完全拋棄了全局變量的概念。然而,可以通過把一個類定義為public static,把類成員變量也定義為public static,使該變量在內存中佔用固定、唯一的一塊空間,來實現全局變量的功能。

  

  成員變量與全局變量的區別

  全局變量:也叫成員變量,是指在類中定義的變量;它在整個類中都有效

  全局變量又可分為:類變量和實例變量

  1.類變量:又叫靜態變量 用static修飾 它可以直接用類名調用 也可以用對象調用 而且所有對象的同一個類變量都是共享同

  一塊內存空間的

  2.實例變量:不用static修飾 它只能通過對象調用 而且所有對象的同一個實例變量是共享不同的內存空間的

  局部變量:是指那些在方法體中定義的變量以及方法的參數 它只在定義它的方法內有效

  注意:如果某個方法中的局部變量的名字與全局變量的名字相同 則該全局變量在這個方法中暫時失效

  public class Test{

  int a=0; //全局變量

  public static void main(String[] args){

  int b =0;//局部變量

  }

  }

  先看下面兩段程序:

  程序一:

  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:\Program\java\test》javac Variable.java

  Variable.java:9: 可能尚未初始化變量 i

  if(j==i)

  ^

  1 錯誤

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

  ===========================================================

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

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

  1.成員變量可以被public,protect,private,static等修飾符修飾,而局部變量不能被控制修飾符及static修飾;兩者都可以定義成final型

  2.成員變量存儲在堆,局部變量存儲在棧

  3.存在時間不同

  4.成員變量有默認值,(被final修飾且沒有static的必須顯式賦值),局部變量不會自動賦值

  ----

  顧名思意了

  什麼是局部,方法內部,塊內部都是局部,執行指令退出那個局部,局部變量自動清除

  比如方法中,不用說

  塊中

  {

  int i=0; //這是一個局部變量,它的作用範圍就在其中

  }

  成員變量就會涉及到誰的成員,類的成員?實例的成員?

  class A{

  int i=0; //實例的成員

  static j=1;//類的成員

  }

  static 的差別,是否依賴於實例而存在

  -

  成員變量:作為類的成員而存在,直接存在於類中。

  局部變量:作為方法或語句塊的成員而存在,存在於方法的參數列表和方法定義中。

  局部變量在使用前必須被程式設計師主動的初始化,和此形成對比,系統中的成員變量則會被系統提供一個默認的初始值。所以在語法上,類的成員變量能夠定義後直接使用,而局部變量在定義後先要賦初值,然後才能使用。

  所有類的成員變量可以通過this來引用。成員變量又分成倆中類型:實例變量和靜態變量。靜態變量在定義時要使用static關鍵字

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • C語言局部變量和全局變量的區別
    局變量是使用相同的內存塊在整個類中存儲一個值。 全局變量的存在主要有以下一些原因: 總之,全局變量可以使用,但是全局變量使用時應注意的是儘可能使期名字易於理解,而且不能太短,避免名字空間的汙染;避免使用巨大對象的全局變量。
  • 使用CSS變量進行主題化:全局變量和局部變量
    將CSS變量設置為設計系統的主題可能會有些棘手: 如果它們太顯眼, 系統就會失去一致性。 如果它們太全局化, 你就會失去粒度。也許我們可以解決這兩個問題。 我想嘗試將設計系統變量歸結為兩種類型: 全局變量和組件變量。 全局變量將使我們在組件間保持一致性。組件變量將給我們帶來粒度和隔離。讓我用一個相當簡單的組件作為例子來告訴你怎麼做。
  • C語言全局變量存放在哪裡?
    全局變量的作用域是從全局變量定義的位置到本源文件結束都有效。我們先看一下全局變量在反彙編中是怎麼體現的,如示例示例代碼CH07_3_4。push edi00401019 lea edi,[ebp-44h]0040101C mov ecx,11h00401021 mov eax,0CCCCCCCCh00401026 rep stos dword ptr [edi]上面的代碼就不再分析了
  • JS代碼中如何使用局部變量和全局變量
    JS開發人員在編寫代碼時可能犯的最大錯誤之一就是聲明不必要的全局變量。全局變量對程式設計師非常有幫助,但如果不謹慎使用它們,它們會影響任何瀏覽器的速度和效率。簡短說明全局變量和局部變量JS中主要使用兩種類型的變量:局部變量和全局變量。
  • C語言中,全局變量濫用的後果竟如此嚴重?
    它只被初始化一次,自從第一次初始化直到程序與你新內閣結束都一直存在,他和全局變量的區別在於全局變量對所有的函數都是可見的,而靜態局部變量只對定義自己的函數體始終可見。局部變量也只有局部作用域,他是自動對象,他在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用結束後,變量就被撤銷,其所佔用的內存也被收回。
  • C語言二級必備知識,全局變量和局部變量,一看就會的C語言知識。
    局部變量定義變量一般有三種形式:在函數的開頭定義在函數的外部定義在複合語句中定義其中在函數的開頭和在複合語句中定義的時候,只能在函數內部和該複合語句中使用,像這種變量稱為局部變量。全局變量:我們知道程序的編譯單位是源程序文件,而一個源程序可以包含若干個函數。在函數內部定義的變量稱為局部變量,在函數外部定義的變量成為全局變量,也叫全程比變量。 全局變量可以為其他函數所使用,他的作用域是從定義到源文件的的結束。
  • 一文讀懂Python中的全局變量局部變量和作用域
    通常小白在寫代碼時,只知道引用變量來應對一些基礎的編碼問題,當面試官問及局部變量和全局變量的具體細節時,就會一臉懵逼,傻傻分不清楚!其實想要徹底了解局部變量和全局變量的關係,本質是大家需要明白何為作用域!這篇文章會帶大家徹底搞懂這三者之的唇齒相依的關聯!Python中,程序的變量並不是在哪個位置都可以訪問的,訪問權限決定於這個變量是在哪裡賦值的。
  • Python定義全局變量的用法
    全局變量是程式語言中常見的一種變量。全局定義,可以是某對象函數創建,也可以是程序任何位置創建,能夠被程序中的所有對象或函數進行引用。全局變量的定義有利於程序的變量共享,簡化了添加和修改的編程代碼。和C語言一樣,Python也具有全局變量,其定義全局變量的用法有兩種:
  • Django視圖之間的全局變量
    記錄一下如何在Django視圖之間共享變量--全局變量。我這裡有一個需求:菜單中的內容是變化的,如果後臺增加了一個項目就要顯示在菜單中。不管切換到哪個頁面都應該能看到最新的項目。解決辦法就是設置一個全局變量,讓這個視圖自動引用這個全局變量,下面是實現步驟。
  • 阿里巴巴開發手冊 static 成員變量,必須考慮是否為 final
    不能用於修飾構造方法private不能被子類方法覆蓋,private類型的方法默認是final類型的staticstatic表全局或靜態的意思,用來修飾成員變量和成員方法,也可以形成靜態被static修飾的成員變量和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。只要這個類被加載,Java虛擬機就能根據類名在運行時數據區的方法區內定找到他們。因此,static對象可以在它的任何對象創建之前訪問,無需引用任何對象。
  • C語言全局變量那些事兒
    其次是語法/語義:從作用域上看,帶static關鍵字的全局變量範圍只能限定在文件裡,否則會外聯到整個模塊和項目中;從生存期來看,它是靜態的,貫穿整個程序或模塊運行期間(注意,正是跨單元訪問和持續生存周期這兩個特點使得全局變量往往成為一段受攻擊代碼的突破口,了解這一點十分重要);從空間分配上看,定義且初始化的全局變量在編譯時在數據段(.data)分配空間,定義但未初始化的全局變量
  • Axure中全局變量的應用技巧
    編輯導讀:在實際應用中,全局變量起到了信息傳遞作用和標誌作用,可以在多個頁面間傳遞信息,或者作為特殊場景的判斷依據。本文作者對Axure中全局變量的應用進行了介紹,適合對Axure的頁面、元件、交互事件等有基本了解的讀者。
  • React-Native使用全局變量踩坑記
    屏幕寬高是個固定值我們完全可以在初始化的時候獲取,然後存起來,之後賦值給一個全局變量。既然是全局變量,那全世界人民都能用到它,想在哪裡用就在哪裡用,媽媽再也不用擔心我天天get去拿值。有了思路直接開幹!
  • React-Native使用全局變量踩坑記
    屏幕寬高是個固定值我們完全可以在初始化的時候獲取,然後存起來,之後賦值給一個全局變量。既然是全局變量,那全世界人民都能用到它,想在哪裡用就在哪裡用,媽媽再也不用擔心我天天get去拿值。有了思路直接開幹!
  • 混合使用C、C++和彙編語之:從彙編代碼訪問 C 全局變量
    在彙編代碼中訪問C全局變量,只能通過地址間接訪問全局變量。要訪問全局變量,必須在彙編中使用IMPORT偽操作輸入全局變量,然後將地址載入寄存器。可以根據變量的類型使用載入和存儲指令訪問該變量。
  • 一文講透父子類中靜態變量,成員變量初始化順序原理
    推薦: 本文主要是想分析一下靜態變量和成員變量的初始化順序,本文將一一進行分析。而靜態變量是在類加載階段就會進行初始化的(如果想詳細了解Java虛擬機的類加載機制,可以點擊這裡),故而如果在同一個類中,那麼靜態變量的初始化一定在成員變量的初始化前面靜態變量和成員變量區別我們先來看下面兩句簡單的代碼
  • 它和變量有什麼區別?
    它和變量有什麼區別?有興趣的朋友可以了解一下!一、前言php是一門很受歡迎的程式語言之一,它的語法簡單易學,迎來了一大批自學者,小編也是其中之一。小編自學php學了四個多月吧!雖然算不上精通,但是也算得上小有成就,獨立開發中小型網站還是不成問題的。由於我大學是計算機專業的,學過很多計算機語言(c語言、c#、java等),所以自學php很輕鬆很快。
  • 如何在uni-app項目中設置全局變量和獲取值
    uni-app項目打開開發工具,創建uni-app項目2、打開App.vue文件,添加globalData,設置全局變量user添加globalData,設置全局變量user3、在對應的界面上,給全局變量user賦值,getApp(
  • C語言開發單片機為什麼大多數都採用全局變量的形式?
    問他們為什麼,回答是「全局變量方便調試」。事實上在學校裡做搞自動控制的人最重要的根本就是控制的結果,而不是代碼本身。代碼只要能工作就行。變量名汙染,低耦合之類的和他們就不在同一個世界。進了公司有些人代碼質量會變好,但有的還是會延續之前的習慣。
  • nodeJs的安裝與npm全局環境變量的配置
    用node類庫就必選在電腦上安裝node.js環境,並且配置npm命令的環境變量。用mac電腦,這些基本上都是自帶的,不用安裝和配置。然後輸入npm -v 通常會出現下面錯誤這就代表我們npm全局環境變量沒有配置