第2章 變量、數據類型、運算符
一、標識符:
二、關鍵字,也叫保留字
三、變量
1.變量定義:程序中爲存儲數據而定義的名稱。變量就是存儲空間數據的表示,它可以表示數據在內存中的地址。通過變量改變存儲的值,任何變量都有類型。
2.變量的命名規範:遵循“駱峯命名法”,變量首字符小寫,各單詞連接的首字符必須大寫。如:studentName, myName, ……。變量名稱命名必須含義清晰,可由一或多個單詞組成或由單詞的簡寫形式組成。
注意:變量名是標識符,所以變量的命名與標識符命名是完全一樣的。
3.聲明變量語法:
i.方式1)數據類型 變量名 = 值;//計算機會分配內存來存儲值
ii.方式2)數據類型 變量名; //這種方式不佔用計算機的內存
變量名 = 值; //接着再給變量賦值
如: int money = 1000;
System.out.println(money);
或者
int money;
Money = 1010;
注意:如果變量在使用前必須初始化(即賦值)否則將會報編譯錯誤。
int money; //未賦值
System.out.println(money); //編譯錯誤
四、 數據類型的分類
:
基本數據類型(也叫值類型、原始類型)。值類型僅僅表示內存一個簡單的數值。
引用類型(對象類型,如數組、接口,即使是基本數據類型的數組也是引用類型)。在Java中任何一種基本數據類型(值類型)都有一個相對應的類進行封裝;這點後面會講到現在先了解即可。
值類型 –-> 引用類型(包裝類型)
int java.lang.Integer類
short java.lang.Short類
byte java.lang.Byte類
long java.lang.Long類
char java.lang.Character類
float java.lang.Float類
double java.lang.Double類
boolean java.lang.Boolean類
基本數據類型(值類型)的細分如下:
byte:字節,佔8個二進制位,數值範圍256:-128 ~ +127
char: 字符,佔2個字節,16個二進制位。
boolean: 布爾類型,false/true.
short: 短整型,佔2個字節,數值範圍65536:-32768 ~ +32767
int: 整型,佔4個字節
long: 長整型,佔8個字節
float: 單精度浮點型,佔4個字節
double:雙精度浮點型,佔8個字節
注意:String不屬於基本數據類型,是引用類型。引用類型(對象)纔會有屬性和方法(後面會詳細講解)。
五、各數據類型的使用:
//整數類型
byte bt = 10; // -128 ~ +127
short sh = 90; //-32768 ~ +32767
int i = 22;
long ln = 784354353L;
System.out.println("byte bt=" + bt);
System.out.println("short sh=" + sh);
System.out.println("int i=" + i);
System.out.println("long ln=" + ln);
//小數類型,在實際開發應用中double使用的多,float使用少。
float fl = 3.1415926F; //單精度浮點類型,定義時要加一個"f/F"
//float fl = 3.1415926; //錯誤
double db = 543.099; //雙精度浮點類型
System.out.println("float fl=" + fl);
System.out.println("double db=" + db);
注意:Java裏小數默認的數據類型是double,如果是float類型要在值後面加一個”F”或”f”。
六、常量
常量:值永遠不變, 常量一但聲明就不能給它重新賦值。
語法:
public static final 數據類型 常量名(全大寫)= 值;//定義常量時必須初始化
final double PI = 3.1415926; //正確
PI = 899.98342; //錯誤
注意:如果是局部常量聲明時不能有public static
七、運算符
賦值運算符: =
算術運算符:+, -, *, / (取整), % (取餘數)
關係運算符:>,<,,<=,>=,!=。其運算結果是boolean值。
邏輯運算符: &, &&, |, ||, !。用來連接多個關係運算符表達式。
boolean bln = (12 & 1<2);
位運算符:>>>,<<<, &, |如果用於數值運算則爲位運算
算術運算符: +, -, , / (取整), % (取餘數)
int a = 10;
int b = 3;
/
int a = 99, b=10;
a += b; 等價於 a = a + b;
其它的幾個運算符( -,*,/,%)類似。
*/
a /= b; //等價於:int a = a/b;
System.out.println(“a=” + a);
八、運算符的優先級
(1) 先執行算數運算(+ - * / %)
(2) 然後執行比較運算(> <…)
(3) 然後執行邏輯運算
(4) 最後執行賦值運算
九、 自增(遞增)++和自減(遞減)
後++,後–
i.變量的原值先被使用或先輸出後,變量的值再自增1或自減1,其優先級低。
int age = 20;
System.out.println( age++ ); //輸出20
System.out.println( age-- ); //輸出20
前++,前–
i.變量值先自增或先自減後,變量的新值再參與運算或輸出,其優先級高。
int age = 20;
System.out.println( ++age ); //輸出21
System.out.println( --age ); //輸出19
十、數據類型轉換
自動類型轉換
制類型轉
自動類型轉換
i.將一種類型的變量賦給另一種類型的變量時,只要滿足以下條件,就會發生
自動類型轉換:
a)兩種類型兼容,如數值類型;
b)目標類型大於源類型;
// float->double 會發生自動轉換
float fl = 0.9F;
double db = fl;
System.out.println("float->double: " + db);
//byte->short->int->long->double 會發生自動轉換
//float -> double
byte bt = 11;
short sh = bt;
int i = sh;
long ln = i;
System.out.println("byte->short->int->long: " + ln);
注意:自動類型轉總是安全的,可以放心使用的,也就是說數值的精度不受影響。
強制類型轉換
i.強制轉換用於顯式類型轉換。如果被轉換的值的數據類型大於其目標類型,就會丟失部分信息。
特別需要注意:強制類型轉換是不安全的,數據精度可能會受到影響。
類型提升規則
1.兩種類型兼容;
i.例如:int 和 double、float等兼容。
2.目標類型大於源類型;
例如:
i.byte、char和 short 型值可提升爲 int 型。
ii.例如:double 型 大於 int 型。
3.對於表達式
i.如果一個操作數爲 long 型,則整個表達式提升爲 long 型。
ii.如果一個操作數爲 float 型,則整個表達式提升爲 float 型。
iii.如果一個操作數爲 double 型,則整個表達式提升爲 double 型。