java運算符完整知識點:
public class Operator{
public static void main(String[] args) {
/*
*運算符:
*兩方面:
*a:從功能來分
* 1.算數運算符 + - *除 % ++ --
* 2.指派運算符 = *= /= += -=
* 3.關系運算符 < > <= >= != ==
* 4.邏輯運算符 &&(與) ||(或) !(非)
* 5.位運算符 直接操作二進制的位 ~(按位取反) ^(按位異或) &(按位與) |(按位或)
* 6.移位運算符 直接操作二進制的位 >>1右移一位,代表除以2 <<1 左移一位,代表乘以2
*b:從運算符操作的元素個數來分:
* 1.一進制運算符:++ -- +(正) -(負) ! ~
* 2.二進制運算符:+ - * /等等
* 3.三元運算符: ?:---三目運算符
*/
// *a:從功能來分
// * 1.算數運算符 + - *除 % ++ –
System.out.println(3+4);//7
System.out.println(3*-2);//-6 遵守普通的運算規則
System.out.println(-3/2);//遵守普通的運算規則,隻适合于整數
System.out.println(-3%2);//餘數符号與被除數保持一緻
//++(自增) --(自減):每次都會自動增加一或者減少一
//主要研究++
//兩種情況:
//>++在前:變量會首先自身加一,再使用加一後的值參與整天的運算
//>++在後:變量首先參與整體的運算,然後再自身加一
int a=2,b,c=3,d;
b=a++;//++在後 b=2 a=3
d=++c;//++在前 c=4 d=4
// * 2.指派運算符 = *= /= += -=
//都是将右邊的值指派給左邊
int f=4;
//注意:定義的變量一定要先給值後參與運算
f+=3;//f=f+3;
int n=2,m=3,u=1,o=0;
o = n++ - –m + (u++ - n–);
System.out.println(n+” “+m+” “+u+” “+o);
// * 3.關系運算符 < > <= >= != ==
//注意:結果隻有true或false
System.out.println(3<4);//true
System.out.println(3==4);//false
// * 4.邏輯運算符 &&(邏輯與) ||(邏輯或) !(非)
//注意點:結果隻有true或者false;參與運算的值也是。
System.out.println(false&&true);//false
System.out.println(true&&true);//true
System.out.println(false||true);//true
System.out.println(!false);//true
System.out.println(3>4 && 5<3);//false
/*
* 短路與:當有多個&&相連時,從左往右運算,隻要得到一個false,就會停止運算
* 短路或:當有多個||相連時,從左往右運算,隻要得到一個true,就會停止運算
*/
System.out.println(false&&true&&true&&true);
int bb=2,cc=3;
//隻要得到一個false,就會停止運算,所謂停止運算就是代碼不再執行
//但是如果後面(其它部分)還有了其它邏輯運算符,将前面連續的值算出後,還需要進行目前運算符(其它部分)的運算
//boolean istrue=cc++<6 || 3<1 && 4>3 && bb++>1 && 2<4;//true bb:2 cc:4
boolean istrue=3<1 && 4>3 && bb++>1 && 2<4|| cc++<6;//true bb:2 cc:4
//結果都為true bb:2 cc:4,cc++進行了運算,也就是說短路與運算後,又進行了或運算。
System.out.println(istrue+" bb:"+bb+" cc:"+cc);//bb=2
// * 5.位運算符 直接操作二進制的位 ~(按位取反) ^(按位異或) &(按位與) |(按位或)
/*
* 執行個體:11和7
* 1011 11
* 0111 7
*
* 0011 &
* 1111 |
* 1100 ^
*
* 按位取反
* 1011 11
* 0100 ~
*
*/
//執行個體:實作兩個數的交換 x=3 y=4
//第一種方式
//借助三方變量
int x=3,y=4,temp=0;
// temp=x;
// x=y;
// y=temp;
//上面的弊端:要借助于三方變量
//第二種方式:使用^
x=x^y;
y=x^y;
x=x^y;
System.out.println(“x:”+x+” y:”+y);
// * 6.移位運算符 直接操作二進制的位 >>1右移一位,代表除以2 <<1 左移一位,代表乘以2
//注意:先右移後左移不一定得到原來的數,先左移後右移也不一定得到原來的數。
// >>>無符号右移一位
int z=5>>1;//0101 右移一位 0010
System.out.println(z);//2
z = z<<1;//0010 左移一位 0100
System.out.println(z);//4
// b:從運算符操作的元素個數來分:
// * 3.三元運算符: ?:—三目運算符
//表達式:由變量,常量以及運算符組成的式子
//語句:表達式+; 空語句:;
// ?:—三目運算符
//組成:表達式一>表達式二?值一:值二
//解釋:當表達式一>表達式二成立的時候,整個運算符的結果就是值一,否則取的是值二
int r=4,i=5;
int q=r>i?r:i;
System.out.println(q);
}
}
附上java運算符優先級圖檔:
java運算符易錯題目
public static void main(String[] args) {
int a=2,b=1,y=0;
y+= a– - b++ + (a>b?a–:b++);
System.out.println(y);
System.out.println(a);
System.out.println(b);
}
編譯結果為 3 1 3 三目運算符的優先級特别低(為13),是以最後算,不要受括号的幹擾。
本人第一次寫部落格,此篇采用知識點放在代碼塊之中的方式,代碼與知識點結合,更加直覺易懂,适合剛入門java的小白。 歡迎各位指出文中的錯誤,或者補充文中遺漏的java運算符相關知識點。