成員變量與局部變量


成員變量與局部變量

成員變量:在類體中定義的變量為成員變量,作用范圍(scope)是整個類,只要在這個類中都可以訪問到它。

局部變量:在一個方法或方法中的代碼塊(code block)中定義的變量。局部變量是在方法或代碼塊被執行的時候被創建,在方法或代碼塊結束時被銷毀。局部變量在進行取值操作前必須被初始化或賦值,否則出現編譯錯誤。

如下程序綜合了變量的應用:

package com.liaojianya.chapter1;
/**
 * This program demonstrates the difference between local variables and member variables
 * @author LIAO JIANYA
 *
 */
public class TestLocalVar4_5
{
	public static void main(String[] args)
	{
		int outer = 1;
		{
			int inner = 2;
			System.out.println("inner = " + inner);
			System.out.println("outer = " + outer);
		}
//		System.out.println("inner = " + inner);
		int inner = 3;
		System.out.println("inner = " + inner);
		System.out.println("outer = " + outer);
		
		System.out.println("In class, the member a = " + a);
	}
	
	static int a = 123;

}

 運行結果:

inner = 2
outer = 1
inner = 3
outer = 1
In class, the member a = 123

總結:塊(block)作用范圍除了用for(while)循環或方法體的左右花括號{}來界定外,還可以直接用花括號{}來定義塊。

1)在上述程序中,塊內定義inner為2,所以第一次打印出來的inner = 2.出了塊后,若取消注釋符號//,會出現編譯錯誤,原因是這個語句不認識名叫“inner”的變量,因為前一個inner是定義在塊內,出了塊,塊內inner將對后面的語句無效。之后,又重新定義一個inner變量並賦值為3,所以之后打印出來為inner = 3。

2)從程序結果可以看出,outer = 1一直適用,因為是定義在塊外的變量並且已經被賦值為1,塊內快外都是可以調用.

3)對於主方法塊外的static int a = 123;是屬於成員變量,必須聲明為static的,否則main方法無法識別,因為是靜態方法只能訪問靜態域,無法訪問非靜態域,雖然是在最后聲明的,但是能夠被訪問,因為它的作用域是整個類。

規則:一般而言,所有變量都遵循“先聲明,后使用”的原則,只有先聲明了,變量才能在內存中存在,之后才能被其他方法去訪問。但是,存在於類中成員變量(不在任何的方法中),其作用域是整個類的范圍,在編譯器的內部協調下,變量只要作為類中的數據成員被聲明,就可以在類內部的任何地方使用,無需滿足“先聲明,后使用”的原則。


免責聲明!

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



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