全局變量、局部變量【好像java中不存在全局變量這樣的概念】


全局變量是一個運行時刻實體,它在程序的整個執行過程中都存在。全局變量占據的存儲區域的使命周期從程序開始在程序終止時結束。  全局變量顯示初始化時,或者未初始化時,在程序映像中有不同的分區:已初始化的全局變量是可執行模塊的一部分。未初始化的全局變量則不是可執行模塊的一部分,只有當定義它們的程序被調用時(即執行時),才分配空間,聲明或定義時並不分配。未初始化的全局變量在運行時被初始化為0。

           局部變量也叫自動變量,它聲明在函數快內,作用范圍也在函數快內,不能同一源文件的其它函數使用,也不能其他文件中的函數使用,局部變量存儲在棧中。無論局部變量顯示初始化,或者未初始化,都只有當定義它們的程序快被調用時(及執行時),才分配空間,聲明或定義時並不分配,局部變量不是可執行每模塊的一部分!!除非顯示地局部變量進行初始化,否則,它們的初始值是不確定的。

全局變量沒有聲明在任何一個函數內,作用范圍在程序運行始終存在,能被同一原文件的任何函數使用,

也能被其他文件中的函數使用,但是使用extern關鍵字。方法執行完后,隨之銷毀結束。

全局變量存儲在數據段中。

          靜態局部變量用來表示不能被其它文件訪問全局變量和函數。為了限制全局變量/  函數的作用域,函數或變量前加static使得函數稱為靜態函數。但此處“static”的含義不是指存儲方式,而是只對函數的作用域僅局限於本文件(所以又稱內部函數)。 注意:對於外部(全局)變量,不論是否有static限制,它的存儲區都是在靜態存儲區,生存周期都是全局的。此時static只是起作用域限制作用,限定作用域在本模塊內部。

如果在一個類里面,該類的方法被聲明為靜態的,那么該類就可以直接調用該方法,方法是:(類名).方法( ){ }

         例子:

           public  class change{

public static void changeStr(  String str){

 

System.out.println("a:"+str);

str="welcome";

//this.str = str;

System.out.println("first:"+str);

 

}

String str = "abc";

 

public static void main(String[] args) {

 

String str="1234";

 

changeStr(str);

 

System.out.println(str);

 

}

}

         靜態全局變量與全局變量的差別是:前者只能被同一源文件中的函數調用,其它文件中的函數不能調用靜態全局變量。

實例變量是定義在類里面,方法體外邊,包括垃圾回收,只對實例變量起作用。


免責聲明!

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



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