1. 程式人生 > 實用技巧 >java中的常量和變數

java中的常量和變數

變數

含義:在程式過程中變數的值會發生變化,直白來說就是用來儲存可變化的資料

變數的好處:使記憶體空間的得到重複利用

舉個例子:

1 System.out.println(10);
2 System.out.println(10);
3 System.out.println(10);

這三個10都是字面量,每一個字面量佔用的都是不同的記憶體空間,就算這幾個字面量相同,佔用的也是不同的空間,字面量的記憶體是無法重複利用的,這樣就浪費了空間,但是使用變數之後,記憶體空間就得到了重複利用。

變數的三要素:

1. 變數的資料型別(資料型別決定了記憶體空間的大小)
2. 變數的名字(方便程式訪問這個資料)
3. 變數儲存的值(儲存的資料)

註解:變數必須先宣告,再賦值才能訪問(沒有賦值不能訪問, 不然會報錯),直白來說變數就是一個儲存資料的一個盒子

注意:在同一個域中,變數名不能重名

1 int a = 102 double a = 10.01
3 //重名了 不能編譯成功

變數的分類

變數分為區域性變數、成員變數。成員變數又分為例項變數(屬性)和靜態變數

在方法體內宣告的變數為:區域性變數(在方法結束後,區域性變數的記憶體空間就釋放了)

在類中,方法外宣告的變數為成員變數,對於例項變數來說,聲明瞭沒有手動賦值,呼叫的時候系統預設賦值

型別預設值
byte、short、int 0
long 0L
float 0.0F
double 0.0
boolean false
char ' '
引用資料型別 null

註解:例項變數不能通過"類名."來訪問

例項變數前加上修飾列表符static就成為了靜態變數,static是不允許用來修飾區域性變數的。

原因:被static關鍵字修飾變數隨著類的載入而載入,被static修飾的變數成為了類變數 ,可以用類直接呼叫, 即作用域為全域性,而區域性變數在方法內,它的作用域在方法內,作用域變了,所以不允許用來修飾區域性變數。

靜態變數: 在類載入時初始化,分配空間

區域性變數:在方法執行過程中分配空間

例項變數:構造方法執行、物件建立時分配空間

常量

定義:常量就是在程式中固定不變的值,是不能改變的資料

註解:Java中的常量,其實就是特殊的變數,也是固定不變的量,有且只能進行一次賦值。Java中定義常量的 語法只需要在"定義變數的語法基礎"上加上一個final關鍵字修飾即可

常量有三種類型:靜態常量、成員常量、區域性常量、字面值常量

字面值常量:

  1. 整數型常量

    1 System.out.println(222);
    2 System.out.println(-111);
  2. 浮點型常量

    1 System.out.println(3.14);
    2 System.out.println(3.1f);
  3. 字元常量

    System.out.println('a');
    System.out.println('f');
  4. 字串型常量

    1 System.out.println("zhangsan");
    2 System.out.println("123456");
  5. 布林型別常量

    1 System.out.println(false);
    2 System.out.println(true);
  6. 空常量(null)

定義常量時需注意:

  1. 在定義常量時就需要對該常量進行初始化,常量的值是不可改變的量、一次賦值,永不改變,也可以不用在宣告時就初始化,但是初始化後必須在使用這個常量之前初始化。
  2. 為了與變數區別,常量取名一般都用大寫字元

靜態常量:被static和final修飾的成員變數

例如下面的程式碼:

1 public class Test {
2     final static int i = 100;
3     public static void main(String[] args) {
4         System.out.println(i);
5     }
6 }

成員常量:被final修飾的成員變數

例如下面的程式碼:

1 public class Test {
2     final int i = 100;
3     public static void main(String[] args) {
4         Test test  = new Test();
5         System.out.println(test.i);
6     }
7 }

區域性常量:被final修飾的區域性變數

例如下面的程式碼:

1 public class Test {
2     public static void main(String[] args) {
3         final int i = 100;
4         System.out.println(i);
5     }
6 }