1. 程式人生 > >變數、資料型別、運算子

變數、資料型別、運算子

第2章 變數、資料型別、運算子

一、識別符號:
識別符號
二、關鍵字,也叫保留字:

在這裡插入圖片描述
三、什麼是變數:程式中為儲存資料而定義的名稱。變數就是儲存空間資料的表示,它可以表示資料在記憶體中的地址。通過變數改變儲存的值,任何變數都有型別。
變數的命名規範:遵循“駱峰命名法”,變數首字元小寫,各單詞連線的首字元必須大寫。如:studentName, myName, ……。變數名稱命名必須含義清晰,可由一或多個單片語成或由單詞的簡寫形式組成。
在這裡插入圖片描述
注意:變數名是識別符號,所以變數的命名與識別符號命名是完全一樣的。
宣告變數語法:
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 = (1
2 & 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 型。
在這裡插入圖片描述