天天看點

JavaSE01_基礎文法02_變量&常量一、變量2.常量

JavaSE基礎文法

  • 一、變量
    • 變量的聲明和初始化
    • 成員變量
    • 局部變量
  • 2.常量

一、變量

變量的作用

:儲存資料

變量的本質

:記憶體的一塊存儲區域

變量的三要素

:資料類型、變量名、變量值

  • 資料類型:決定記憶體大小,可以存什麼值
  • 變量名:如何通路這塊存儲區域
  • 變量值:裡面存儲的資料

變量的聲明和初始化

聲明變量文法

·: 資料類型 變量名;

//例: 
int i;
           

變量指派

:變量名 = 變量值;

注意:

聲明變量和變量的指派可以同時進行,也可以分開進行。變量在被通路(讀取)之前,必須有值

例如:資料類型 變量名 = 變量初始值;

變量的使用

:通過變量名來通路這塊存儲區域

  • 變量必須先聲明後使用,并且變量在使用之前必須有初始值
  • 變量有作用域
變量作用域
從聲明處開始,到它所屬的}結束
(1)同一個作用域中,一個變量聲明一次
(2)同一個作用域變量不能重名
           

成員變量

變量初始化

成員變量初始化有三個位置:

1.顯式指派
2.代碼塊
3.構造方法
           

對于final修飾的成員變量來說,隻要在使用之前進行初始化即可;

局部變量

  • 局部變量就是在方法中的變量
  • 局部變量在使用前必須顯示初始化,否則使用報錯;因為不想成員變量會賦予預設值;
  • 局部變量不進行初始化,也沒有使用,那麼在編譯的時候,直接抛棄;這也意味着根本就不會在棧幀中配置設定記憶體
public class test{
	public static void main(String[] args){
		int age;
	}
}
           

這段代碼編譯後的位元組碼檔案:

JavaSE01_基礎文法02_變量&常量一、變量2.常量

局部變量表隻有args一個;這意味着age被直接抛棄了;

2.常量

java中 final修飾的變量稱之為不可變變量

常量:1,“abc” , true 等這些值才是常量

(1)編譯器可以執行常量計算

常量的運算在編譯的時候就執行完了,是以變量b 編譯成.class的時候直接存儲的就是20,由于20在byte範圍内,是以此代碼不會報錯

(2)變量的值隻能在運作時擷取

byte  b1 = 10;
	byte b = b1 + 10;//編譯報錯
           

變量的值隻有在運算的時候才能确定,編譯的時候不知道變量值是多少;由于變量b1和10進行運算,需要提升b1為int類型,是以左邊byte類型不相容,是以譯不通過