Java - 3 運算子
算術運算子
/*
++a : 先運算後取值
a++ : 先取值後運算
*/
int i = 1;
i = i++; // (1)temp=i;(2)i=i+1;(3)i=temp;
System.out.println(i); // 1
int i = 1;
i = ++i; // (1)i=i+1;(2)temp=i;(3)i=temp;
System.out.println(i); // 2
System.out.println(10/4); // 2
System.out.println(10.0/4); // 2.5 保留小數
double d = 10/4; // 2.0
// %本質:a%b = a - a/b*b
System.out.println(10%3); // 1
System.out.println(10%3); // -1
System.out.println(10%-3); // 1
關係運算子
當==
用於比較基本資料型別時,它會直接比較兩個變數的值是否相同。而當==
用於比較物件時,它會比較兩個物件的記憶體地址,也就是判斷兩個物件是否是同一個物件
equals
是Java中Object類的一個方法,它用於比較兩個物件的內容是否相等。在Object類中,equals
方法的預設實現是比較物件的記憶體地址,也就是判斷兩個物件是否是同一個物件
String類重寫了equals
方法,用於比較兩個字串的內容是否相同
// str1 和 str2 可以是字串變數, 也可以是字串變數
str1.equals(str2);
邏輯運算子
&&
: 短路與 (如果第一個條件為false,後面不會繼續判斷)
&
: 邏輯與
三元運算子
int a = 10;
int b = 99;
int result = a>b ? a++ : b--; // 1真
int n1 = 552;
int n2 = 33;
int n3 = 123;
int max = (n1>n2?n1:n2) > n3 ? (n1>n2?n1:n2) : n3;
位運算子
按位與&
按位或|
按位異或^
按位取反~
// 2的原碼(補碼) 00000000 00000000 00000000 00000010
// 3的原碼(補碼) 00000000 00000000 00000000 00000011
// 運算(得到的是補碼)00000000 00000000 00000000 00000010(是正數,所以原碼也是這個)
System.out.println(2&3)
算數右移>>:低位溢位,符號位不變,用符號位補溢位的高位
本質:/2
算數左移<<:符號位不變,低位補0
本質:*2
邏輯右移(無符號右移)>>>:低位溢位,高位補0
沒有<<<