全局變量、成員變量、類變量、靜態變量、實例變量、局部變量的定義與區別


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/riemann_/article/details/93929658
全局變量
全局變量又叫成員變量,它是聲明在類里,函數,靜態語句塊外的變量,全局變量又分為類變量(靜態變量)、實例變量兩種.
通過代碼來看一下:

private int i;//實例變量
private static int j;//類變量

  

實例變量總是通過對象來訪問,因為它們的值在對象和對象之間有所不同。而由static修飾的類變量(靜態變量)在類裝載的時候就會被初始化,也就是說一處修改多處改變.

局部變量
方法內定義的變量叫局部變量,因為只能在方法內部使用,固不可以用private,public,protect來修飾。

{
int k;//局部變量
}

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

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

下面是它們之間的思維導圖關系。

 

 


全局變量和局部變量的區別
全局變量:
1、成員變量定義在類中,在整個類中都可以被訪問。
2、成員變量隨着對象的建立而建立,隨着對象的消失而消失,存在於對象所在的堆內存中。(實例變量)
3、成員變量有默認初始化值。
局部變量:
1、局部變量只定義在局部范圍內,如:函數內,語句內等,只在所屬的區域有效。
2、局部變量存在於棧內存中,作用的范圍結束,變量空間會自動釋放。
3、局部變量沒有默認初始化值

實例變量和類變量的區別
1、兩個變量的生命周期不同
實例變量隨着對象的創建而存在,隨着對象的回收而釋放。
靜態變量隨着類的加載而存在,隨着類的消失而消失。
2、調用方式不同
實例變量只能被對象調用。
靜態變量可以被對象調用,還可以被類名調用。
3、數據存儲位置不同
實例變量存儲在堆內存的對象中,所以也叫對象的特有數據。
靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。

 

在現代的面向對象語言如Java,C++,C#,Ruby中,由於變量都是封裝在類里面的,對別的類不可見,所以已經幾乎完全拋棄了全局變量的概念。然而,可以通過把一個類定義為public static,把類成員變量也定義為public static,使該變量在內存中占用固定、唯一的一塊空間,來實現全局變量的功能。
————————————————
版權聲明:本文為CSDN博主「riemann_」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/riemann_/article/details/93929658


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM