1. 程式人生 > >全域性變數和區域性變數初始化及預設值探究

全域性變數和區域性變數初始化及預設值探究

public class VariableTest {
	class Person {
		private String familyName;
		private String lastName = "33";
		private int age;
		private Integer gender;

		public String getFamilyName() {
			return familyName;
		}

		public void setFamilyName(String familyName) {
			this.familyName = familyName;
		}

		public String getLastName() {
			return lastName;
		}

		public void setLastName(String lastName) {
			this.lastName = lastName;
		}

		public int getAge() {
			return age;
		}

		public void setAge(int age) {
			this.age = age;
		}

		public Integer getGender() {
			return gender;
		}

		public void setGender(Integer gender) {
			this.gender = gender;
		}

		@Override
		public String toString() {
			return "Person [familyName=" + familyName + ", lastName=" + lastName + ", age=" + age + ", gender=" + gender
					+ "]";
		}
	}

	@Test
	public void propertyInitTest() {
		// private String familyName;
		// private String lastName = "";
		// private int age;
		// private Integer gender;
		Person person = new Person();
		System.out.println(person);// Person [familyName=null, lastName=, age=0,
									// gender=null]
		String lastName = person.getLastName();
		if ("".equals(lastName)) {
			System.out.println("string型別全域性變數初始化值");
		}
		String dd;
		// System.out.println(dd);
	}
}

首先應該瞭解的是,在類中宣告的變數叫做全域性變數(global variable),在方法中宣告的變數叫做區域性變數(local variable)。

        全域性變數在宣告時可以賦值也可以不賦值。如果賦值的話,第一次使用時使用的是所賦的值;如果不賦值的話,則第一次使用時使用的是全域性變數的預設值:引用型別(String,Integer,Boolean等包裝型別)的變數預設值都是null,基本型別的變數預設值則不一樣,int型變數預設值是0,boolean型變數預設值是false

       區域性變數在宣告時也是可以賦值或者不賦值,但是在使用之前一定要賦值,否則在使用的時候會報編譯錯誤的,說 The local variable dd may not have been initialized。

       總結來說,全域性變數在使用前不必賦值,沒賦值的話用預設值,然而區域性變數在使用前必須賦值。

相關推薦

全域性變數區域性變數初始預設探究

public class VariableTest { class Person { private String familyName; private String lastName = "33"; private int age; private I

C/C++關於全域性變數區域性變數初始與不初始的區別

在C語言裡,全域性變數如果不初始化的話,預設為0,也就是說在全域性空間裡:int x =0; 跟 int x; 的效果看起來是一樣的。但其實這裡面的差別很大,強烈建議大家所有的全域性變數都要初始化,他們的主要差別如下: 編譯器在編譯的時候針對這兩種情況會產生兩種符號

keil除錯過程檢視全域性變數區域性變數的方法編譯器優化

keil除錯過程檢視全域性變數和區域性變數的方法及編譯器優化 一、檢視全域性變數的方法:Watch Window The Watch window allows to evaluate symbols, registers, and expressions. The window

Java中例項變數區域性變數初始的情況

例項變數會有預設初始值(0,false,null,'\u0000'等),區域性變數不會有預設初始值, public class test01 { private String s; private int [] year = new int[3]; public

java成員變數區域性變數初始記憶體中的執行機制

成員變數:   當系統載入類或建立類的例項時,系統會自動為成員變數分配記憶體空間,並在分配記憶體空間後,自動為成員變數指定初始值。 eyeNum是類屬性。name是例項屬性 所有person例項訪問eyeNum都將訪問person類的eyeNum屬性。訪問的是同一塊記憶

Python3 全域性變數區域性變數的使用

name='lhf' def change_name(): print('我的名字',name) change_name() def change_name(): name='帥了一筆' print('我的名字',name) change_name() print(name) d

JS 變數函式提升 全域性變數區域性變數

1. var a = 10; function test() { a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test();//100 10 100 =&

Python千萬要注意的全域性變數區域性變數問題

1、直接在函式中呼叫全域性變數 m = 100 def fun(): print("m1:",m) fun() print("m2:", m)  輸出: 2、函式體內呼叫與全域性變數同名的區域性變數 m = 100 def fun(): m = 50

python--全域性變數區域性變數

區域性變數: 是在函式內部定義的變數,只能在函式內部使用 函式執行結束後,函式的區域性變數,會被系統回收 作用:在函式內部使用,臨時儲存函式內部需要使用的資料 全域性變數: 是在函式外部定義的變數(沒有定義某一個函式內,所有函式都

關於python的全域性變數區域性變數

全域性變數: 定義在函式外部,作用域是整個程式碼段,儲存在記憶體中。 區域性變數: 定義在函式內部,作用域僅在函式內部,儲存在棧中,當函式完成功能,區域性變數會自動丟失。 如果在函式內試圖是修改全域性變數,python會自動建立一個區域性變數替代,名字和全域性變數相同。 下面摘抄小甲魚老

Python變數學習-認識全域性變數區域性變數

學習Python的過程中少不了用到變數,在日常的編寫程式的過程中,每時每刻都在使用變數,   問:什麼是變數 答:變數是可以改變的數,通常沒有固定的值 問:有幾種變數 答:變數分為2種形式,即:全域性變數和區域性變數   名詞解釋:   全域性變數:顧名思義全域性變數,作用

C/C++ 全域性變數區域性變數在記憶體裡的區別?堆

一、預備知識—程式的記憶體分配  一個由c/C++編譯的程式佔用的記憶體分為以下幾個部分  1、棧區(stack)— 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧,如果還不清楚,那麼就把它想成陣列,它的記憶體分

js全域性變數區域性變數以及變數宣告提升

區域性變數和全域性變數重名時: 一、Javascript的變數的scope是根據方法塊來劃分的(也就是說以function的一對大括號{ }來劃分)。切記,是function塊,而for、while、if塊並不是作用域的劃分標準。 二、 當全域性變數跟區域性變數重名時,區域性變數的scope

JS中最經典的全域性變數區域性變數問題(1、作用域作用域鏈 2、變數宣告提前)

var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test(); 1、程式的執行結果為:100

java全域性變數區域性變數

全域性變數是一個執行時刻實體,它在程式的整個執行過程中都存在。全域性變數生命週期為程式開始到程式結束。 全域性變數顯示初始化時,或者未初始化時,在程式映像中有不同的分割槽:已初始化的全域性變數是可執行模組的一部分。未初始化的全域性變數則不是可執行模組的一部分,只有當定義它們的程式被呼叫時

python全域性變數區域性變數

在函式內部定義的變數叫區域性變數,在函式外定義的變數叫全域性變數 如果全域性變數和區域性變數名稱相同,則在函式內部用的是區域性變數的值,就像就近原則一樣;在函式體外,用的還是全域性變數 a = 10 d

python 第二十四篇 全域性變數區域性變數的作用域

#變數的作用域:是指一個變數所產生的作用範圍,也就是說在哪一個範圍內變數能夠被直譯器所識別。 #變數分為:全域性變數 和 區域性變數 #全域性變數:一般宣告在函式的外部。 #全域性變數的作用域:整個.py檔案內都可以使用,都可以被識別。 #區域性變數:一般宣告在函式的

全域性變數區域性變數的區別

全域性變數【成員變數、欄位】 作用域直接宣告在類當中的變數,作用於整個類當中,整個類中都可以被訪問到 修飾符 可以被static final 修飾詞修飾 這裡被final修飾的表示的是最終的不可變得 這裡被static修飾的是靜態成員變數。其隨著位元組碼檔案建立

Python中的全域性變數區域性變數

當局部變數和全域性變數名字一樣時,依然是不同的變數,但是值一樣時,地址依然一樣。值不一樣時,地址不一樣,修改區域性變數,全域性變數的值依然不變,例如: num = 100 def test(): num = 99 print("區域性變數num

java基礎———類與物件,成員變數區域性變數,封裝關鍵字staticthis

類與物件,成員變數和區域性變數,封裝及關鍵字static和this 面向物件的思想 類與物件及其應用 物件的記憶體圖 成員變數和區域性變數的區別 匿名物件 封裝(private) this關鍵字 構造方法 物件的建立步驟