Java變數的理解
Java中的變數理解:
-
基本資料型別:
基本型別包括四類八種:
整數型別:byte,short,int,long
浮點數型別:float,double
字元型別:char
布林型別:boolean
注:bit:位元,指的是二進位制的位數 -
引用型別:
java語言中除基本型別之外所有的變數型別都為引用型別,所有物件都是通過引用對其操作的;
程式設計師單身是一個通病,但是可以new一個物件,我們的物件就是一個引用型別,宣告一個引用型別的變數,
如 String s ; //宣告了一個String型別的引用變數,但沒有使它指向一個物件,s是存放在棧中的;
s = new String ("Hello world! "); //使用new語句建立
-
成員變數:
a、成員變數可以使用Java語言中任何一種資料型別(包括基本型別和引用型別);
b、在定義成員變數時可以對其初始化,如果不初始化,java會使用預設的值對其初始化(引用型別為null,布林型別為false,其餘基本型別的初始值都為0);分類:(1)類屬性(以static修飾):類屬性從這個類的準備階段開始存在,直到系統完全銷燬這個類,類屬性的作用域與這個類的生存週期相同;類屬性可以理解為類成員變數,與類共存亡;只要類存在,程式就可以訪問該類的類屬性,在程式中可以通過如下格式:類.類屬性。一個類屬性的記憶體空間只有一個,多個該類的物件共享該類屬性的記憶體;當其中一個例項對其修改時,就會改變,static修飾的存放在data segment;類屬性從這個類的準備階段起開始存在,直到系統完全銷燬這個類,類屬性的作用域與這個類的生存範圍相同;
(2)例項屬性(不以static修飾):例項屬性從這個類的例項被建立開始起存在,直到系統完全銷燬這個例項,例項屬性的作用域與該例項的生存週期相同;例項屬性可以理解為例項的成員變數,它作為例項的一個成員,與例項共存亡;只要例項存在,程式就可以訪問該例項屬性,在程式中可以通過如下格式: 例項.例項屬性。當建立例項的時候,在堆裡面會對成員變數進行初始化;每個物件通過對應的類例項化後會有一個例項屬性。
提示:一個類在使用之前要經過類載入、類驗證、類準備、類解析、類初始化等幾個階段。
-
區域性變數:
(1)區域性變數可以使用java語言中的任何一種資料型別;
(2)除了形參外,區域性變數都必須進行顯式初始化,如果不初始化,編譯不會通過;分類:(1)形參(方法簽名中定義的變數):作用域在在整個方法內;當類或物件呼叫某個方法時,系統會在該方法棧區為所有形參分配記憶體空間,並將實參的值賦給對應形參,這樣就完成了形參的初始化;
(2) 方法區域性變數(在方法內定義):作用域從定義該區域性變數的地方開始生效,到該方法結束時消失;
(3)程式碼塊區域性變數(在程式碼塊內定義):作用域從定義該變數的地方開始生效,到該程式碼塊結束時失效;
通過一個例項來驗證一下:
class Person{
public String name;
public static int num;
}
…………
Person p1 = new Person(); //建立第一個物件;
Person p2 = new Person(); //建立第二個物件;
P1.name = "Tom";
P2.name = "Jack";
P1.num = 1;
P2.num = 2;