1. 程式人生 > >Java變數的理解

Java變數的理解

Java中的變數理解:

  • 基本資料型別:

    基本型別包括四類八種:
    整數型別:byte,short,int,long
    浮點數型別:float,double
    字元型別:char
    布林型別:boolean
    注:bit:位元,指的是二進位制的位數

  • 引用型別:

    java語言中除基本型別之外所有的變數型別都為引用型別,所有物件都是通過引用對其操作的;

    程式設計師單身是一個通病,但是可以new一個物件,我們的物件就是一個引用型別,宣告一個引用型別的變數,
    如 String s ; //宣告了一個String型別的引用變數,但沒有使它指向一個物件,s是存放在棧中的;
    s = new String ("Hello world! "); //使用new語句建立

    一個String型別的物件,並用s指向它,之後就用s對其操作;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;

在這裡插入圖片描述