常量:
概念:
- 表示不能改變的數值
分類:
- 整數常量---所有整數
- 小數常量---所有小數
- 布爾型常量---隻有兩個數值,true和false
- 字元常量---将一個數字字母或者符号用單引号('')表示
- 字元串常量---将一個或者多個字元用雙引号辨別
- null常量---隻有一個數值就是null
定義格式:
- 用final修飾(也稱最終變量)
- 常量在聲明時必須賦初值,指派後不能再修改值
- 常量名通常用全大寫字母表示
- 聲明時需要添加final或static final類型修飾符,例如:
private final int PI=3.141596; //常量,類加載時确定或者更靠後确定值
private static final int PI=3.14159;//靜态常量(編譯期常量),編譯時就确定值(編譯為class檔案)
存儲區域:
- 方法區
變量:
概念:
- 記憶體中的一個存儲區域
- 該區域有自己的名稱(變量名)和類型(資料類型)
- 該區域的資料可以在同一類型範圍内不斷變化
為什麼要定義變量:
- 用來不斷的存放同一類型的常量,并可以重複使用
- 定義變量就是要告訴編譯器這個變量的資料類型,這樣編譯器才知道需要配置設定多少空間給它,以及它能存放什麼樣的資料。在程式運作過程中空間的值是變化的,這個記憶體空間就成為變量。為了便于操作,給這個變量取個名字,稱為變量名。
定義格式:
- 資料類型 變量名 =初始值;
(ps:變量就如同數學的未知數)
成員變量和局部變量:
範圍:
- 成員變量(在類體中所定義的變量為成員變量):在整個類中都有效
- 局部變量(再類的方法内聲明變量,包括方法的參數都屬于局部變量):隻在目前定義的方法内有效,不能用于類的其他方法中。局部變量的生命周期取決于方法,當方法被調用時,Java虛拟機為方法中的局部變量配置設定記憶體空間,當該方法調用結束後,則會釋放方法中局部變量占用的記憶體空間,局部變量也将被銷毀。
- 局部變量可與成員變量的名字相同,此時成員變量将被隐藏,即這個成員變量在此方法中暫時失效
初始值
- 成員變量可以不賦初始值值,因為成員變量在堆中,會自動給變量賦初值
- 局部變量必須賦初值,因為局部變量在棧中,不會為其自動賦初值
聲明周期
- 成員變量:随着對象的消失而消失,會被jvm的垃圾回收器來回收掉
- 局部變量:定義的時候産生,目前的方法的括号,語句塊的括号執行完畢就會消失
存儲位置
- 成員變量:在堆中
- 局部變量:在棧中