Java全局變量與局部變量

Java中代碼塊分爲靜態代碼塊和非靜態代碼塊

首先來區分一下靜態代碼塊和非靜態代碼塊的區別(在起作用時間):

1、靜態代碼塊類加載的時候執行;

package joon;
public class Test {
    static{
	System.out.println("靜態代碼塊");
    }
}

2、非靜態代碼塊每次創建對象時執行,每創建一個對象就會執行一次;

package joon;
public class Test {
    static{
        System.out.println("靜態代碼塊");
    }
public static void main(String[] args) {
	Test test=new Test();//因爲創建的對象沒有使用所以會出現警告
	new Test();
	}

}
public class Test {
    {
	System.out.println("非靜態代碼塊");
    }
    static{
	System.out.println("靜態代碼塊");
    }
    public static void main(String[] args) {
	new Test();
	new Test();
    }
}

運行結果是:靜態代碼塊 非靜態代碼塊 非靜態代碼塊

全局變量和局部變量

全局變量(成員變量):直接在類中定義的變量。

全局變量定義後,其作用域是其所在的整個類,成員變量的定義沒有先後順序。

局部變量:局部變量定義在代碼塊 方法體 方法參數列表,局部變量沒有默認值,所以使用之前需要賦值(初始化)。

局部變量的作用範圍:從定義的位置開始到所在的語句塊結束。

如果局部變量的名字與全局變量的名字相同,則在局部變量的作用範圍內全局變量被隱藏,即這個全局變量在同名局部變量所在方法內暫時失效。 如果在局部變量的作用域範圍內訪問該成員變量,則必須使用關鍵字this來引用成員變量。

package joon;
public class Test {

	int score;
	int height;
	char letter;
	boolean flag;
	double light;
	static{
		System.out.println("靜態代碼塊");
	}
	{
		System.out.println("非靜態代碼塊");
		System.out.println(height);
		System.out.println(letter);
		System.out.println(flag);
		System.out.println(light);
	}
	{
	    if(true) {
		int score1=100;
		System.out.println(score1);
	    }
	double score=90;
	System.out.println(score);
	System.out.println(this.score);
	}

}

 聲明局部變量時,數據類型前除final外不允許有其他關鍵字,即其定義格式爲: [final] 數據類型 變量名 = 初始值;

局部變量不能使用訪問控制符修飾,因爲局部變量的作用範圍已經限定,局部變量不能用static修飾

this關鍵字不能用在靜態代碼塊或者靜態方法中,由於非靜態方法只能用對象調用,而靜態方法還可以用類名調用,類名不是對象,所以this不能用在靜態方法中
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章