變數與運算子
目錄
1關鍵字與識別符號
1.1 java關鍵字的使用
- 定義:被Java語言賦予了特殊含義,用做專門用途的字串(單詞)
- 特點:關鍵字中所有字母都為小寫
1.2 保留字
現版本暫未使用,但以後的版本可能作為關鍵字進行使用
1.3 識別符號的使用
識別符號:凡是需要自己命名的地方都叫做識別符號
1.4 規則與規範
- 定義合法識別符號規則:
- 由26個英文字母大小寫,0-9 ,_或 $ 組成
- 數字不可以開頭。
- 不可以使用關鍵字和保留字,但能包含關鍵字和保留字。
- Java中嚴格區分大小寫,長度無限制。
- 識別符號不能包含空格。
- Java中的名稱命名規範:
- 包名:多單片語成時所有字母都小寫:xxxyyyzzz
- 類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz
- 變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
- 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連線:XXX_YYY_ZZZ
2 變量的使用
2.1按資料型別分類
2.2定義變數的格式:
格式: 變數的型別 變數名 = 變數值
例:
//宣告一個變數並賦值
int number = 20;
//宣告一個變數
int number2;
//給變數賦值
number2 = 30;
System.out.println(number2);
//變數可以被多次賦值後一次賦值覆蓋前一次的值
number2 = 50;
//int number2 = 100; 編譯錯誤 - 同一作用域內的變數名不可重複
int a,b,c; //同時聲明瞭三個變數
a = b = c = 10; //同時給三個變數賦值
int aa = 10,bb = 20,cc = 30;
2.3變數使用的注意點:
①先宣告再使用
②作用域 :宣告它的那對大括號內
③在同一個作用域中變數名不能相同
④變數可以被多次賦值,後一次賦值覆蓋前一次的值
3變量間的運算
3.1基本資料類型間運算
一 基本資料型別之間的運算(7種 不包括(boolean))
- 自動型別提升:小容量和大容量的變數作運算,用大容量的型別來接收資料。
byte,short,char -> int -> long -> float -> double
2.強制型別轉換:自動型別提升的逆過程。
注意:①容量指的是變數的表數範圍
②byte,short,char三者之間做運算先自身提升為int類型
3.2 String與基本資料型別(8種)間運算
字符串的賦值方式:
String str = “aaa”;
String s = new String(“bbb”);
說明:
1.String與基本資料型別間只能做連線運算
2.String與基本資料型別做運算結果只能是String
4進制
4.1進制的表示
二進位制:以0b或0B開頭 。比如:0b10
八進位制:以0開頭.比如010
十六進位制:以0x或0X開頭。比如0x10
4.2二進制:
①所有數字在計算機的底層都是以什麼方式存在?二進位制
②計算機以什麼樣的形式儲存所有的整數?補碼
什麼是原碼,反碼,補碼?
1、正數的原碼,反碼,補碼相同
2、負數的
- 原碼:直接將一個數值換成二進位制數。最高位是符號位
- 反碼:除符號位外,將原碼取反(0變1,1變0)
- 補碼:在反碼的基礎上加1
5運算符
算術運算子
說明:
- 前++後++前—後—的區別是什麼?
- 前++ :先自增1,後賦值
- 後++ :先賦值,再自增1
- 前-- :先自減1,後賦值
- 後-- :先賦值,再自減1
-
程式碼:
//除 int number = 10; int number2 = 4; int number3 = number / number2; //2 double number4 = number / number2; //2.0 number4 = (number + 0.0) / number2; //2.5 number4 = (double)number / number2; //2.5 number4 = (double)(number / number2); //2.0 //使用場景 : 判斷是否可以整除。 比如 x % 5 == 0 如果條件滿足那麼就可以整除 System.out.println(0 % 2); //0 System.out.println(1 % 2); //1 System.out.println(2 % 2); //0 System.out.println(3 % 2); //1 System.out.println(4 % 2); //0 System.out.println(5 % 2); //1 System.out.println(6 % 2); //0 System.out.println("-------------------------------------------"); //思考?取模結果的正負和什麼有關? 和被模數有關。被模數是正的結果就為正,被模數是負的結果就為負 System.out.println(-3 % 2); // -1 System.out.println(3 % -2); //1 System.out.println(-3 % -2); //-1
賦值運算子
相關面試題:
①編譯不通過,因為short型別變數運算子時會先自動型別提升為int型別
②編譯可以通過,不會改變原來的資料型別
比較運算子(關係運算符)
說明:結果都是boolean型別
邏輯運算子
說明:
1.邏輯與和短路與。當運算子的兩邊有一個為false結果就為false
2.邏輯或和短路或。當運算子的兩邊有一個為true結果就為true
3.邏輯非。取反。(如果a的值為true結果為false.如果a的值為false結果為true)
4.邏輯異或。當運算子的兩邊值相同結果為false.兩邊的值不同結果為true
特點 :
1.邏輯運算子是對boolean型別進行運算的
2.邏輯運算子的結果為boolean型別
位運算子
說明:
>> (右移): 在一定範圍內,每向右移一位。原來的數除以2
<< (左移) : 在一定範圍內,每向左移一位。原來的數乘以2
>> : 如果是正數最高位用0補,如果是負數最高位用1補
>>> (無符號右移) :
三元運算子
格式 : (條件表示式)?表示式1 : 表示式2
1.條件表示式的結果只能是boolean型別。如果結果為true返回的結果為表示式1.否則結果為表示式2.
2.三元素運算子可以巢狀使用,但是不建議。
3.表示式1和表示式2的型別要保持一致
//需求?求三個數中的最大值
int aa,bb,cc;
aa = 10;
bb = 20;
cc = 30;
int maxNumber = (aa > bb)? aa : bb;
maxNumber = (maxNumber > cc)? maxNumber : cc;
System.out.println(maxNumber);
程式碼 :
6數據的交換
public class Demo {
public static void main(String[] args) {
//方式一 :
/*
優點:容易理解。基本資料型別和引用資料型別都可以採用如下方式
缺點:多建立一個變數。佔用了記憶體。
*/
int temp = a;
a = b;
b = temp;
//方式二:
/*優點 : 效率高
缺點 :可能會造成精度損失(溢位),只能用於(基本資料型別)數值
*/
a = a + b; // a = (a + b)
b = a - b; // b = (a + b) - b;
a = a - b; // a = (a + b) - b(a);
//方式三
a = a ^ b; //a (k) = a ^ b
b = a ^ b; // k(a ^ b) ^ b
a = a ^ b; // k(a ^ b(a)) ^ b
System.out.println("a=" + a + " b=" + b);
}
}