自學java第十四天
Java的算數運算子
運算子指明對運算元的運算方式。組成表示式的Java操作符有很多種。運算子按照其要求的運算元數目來分,可以有單目運算子、雙目運算子和三目運算子,它們分別對應於1個、2個、3個運算元。運算子按其功能來分,有算術運算子、賦值運算子、關係運算符、邏輯運算子、位運算子和其他運算子
算術運算子
算術運算子用在數學表示式中,它們的作用和在數學中的作用一樣。
算數運算子有:+ 、- 、* 、/ 、% 、++ 、--
舉例:+,-,*
//算術運算子
// + - * / % ++(自增)--(自減)
int a=23;
int b=5;
//+,加,相加運算子兩側的值
//+,同時也是字串的連線運算子
int c=a+b;
System.out.println("a+b="+c);
//-,減,左運算元減去右運算元
int d=a-b;
System.out.println("a-b="+d);
//*,乘,相乘操作符兩側的值
int e=a*b;
System.out.println("a*b="+e);
//零乘以任何數都為零
int f=a*0;
/(除)
//除(整型不能除零,)
int f=a/b;//整數/整數=整數,是截斷取整,而不是四捨五入取整
//int g=a/0;整數不能除零
//當除數或者被除數中有一個為浮點型的,那麼結果就是自然除法的結果
//如果此時除數為0或者0.0那麼結果為正無窮或者負無窮
//0.0除0結果為NaN非數;
System.out.println("Infinity 正無窮"+10/0.0);
System.out.println("沒有四捨五入,直接截斷 :a/b="+f);
System.out.println("0.0/0.0="+(0.0/0.0));
// System.out.println("除零異常"+10/0);
//java.lang.ArithmeticException除零異常
取餘
取餘運算子既可用於兩個運算元都是整數的情況,也可用於兩個運算元都是浮點數(或一個運算元是浮點)的情況。
int a=19;
int b=4;
float c = 3.8f;
float d = 1.8f;
//% 求餘
/*兩個整數時第二個數不能為零
* 一個或者2個為浮點數,第二個數為0或者0.0時,結果NaN,第一個數為0或0.0時,
* 結果為0.0*/
int h=a%b;
System.out.println("a % b="+h);
System.out.println("a % 0.0="+(a % 0.0));
System.out.println("0.0 % b="+(0.0 % b));
System.out.println("c % d="+(c % d));
++自加,--自減
自增(++)自減(--),運算子是一種特殊的算術運算子,在算術運算子中需要兩個運算元來進行運算,而自增自減運算子是一個運算元
//++自增
//定義變數
int A=20;
int B=20;
int C=20;
int D=C++ + B;
//字首自增自減法(++a,--a): 先進行自增或者自減運算,再進行表示式運算。
//字尾自增自減法(a++,a--): 先進行表示式運算,再進行自增或者自減運算
System.out.println("++A="+(++A));
System.out.println("B++="+(B++));
System.out.println("D="+D);
//--自減
D=20;
int E=20;
System.out.println("--D="+(--D));
System.out.println("E--="+(E--));
//int b = ++A; 拆分運算過程為: a=a+1=4; b=a=4, 最後結果為b=4,a=4
//int d = --C; 拆分運算過程為: c=c-1=2; d=c=2, 最後結果為d=2,c=2
比較運算子
>、 >= 、<、 <=、 == 、!=
//比較運算子
System.out.println("5>4 ="+(5>4));
System.out.println("5>=4 ="+(5>=4));
System.out.println("5<4 ="+(5<4));
System.out.println("5<=4 ="+(5<=4));
System.out.println("5==4 ="+(5==4));
System.out.println("5!=4 ="+(5!=4));
成立則為true,不成立則為false。
邏輯運算子
//邏輯運算子
//&&:短路與,前後兩個運算元必須都是true才返回true,否則返回false。
//&:不短路與,作用於&&相同,但不會短路
//||:或,只要兩個運算元中有一個是true,就可以返回true,否則返回false。
//|:不短路或,作用與||相同,但不會短路。
//!:非,只需要一個運算元,如果運算元為true,則返回false;如果運算元為false,則返回true。
//^:異或,當兩個運算元不同時才返回true,如果兩個運算元相同則返回false
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
// 短路邏輯運算子
int a = 5;//定義一個變數;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路邏輯運算子的結果為"+b);
System.out.println("a的結果為"+a);
結果:
賦值運算子:
操作符
描述
=
簡單的賦值運算子,將右運算元的值賦給左側運算元
+=
加和賦值操作符,它把左運算元和右運算元相加賦值給左運算元
-=
減和賦值操作符,它把左運算元和右運算元相減賦值給左運算元
*=
乘和賦值操作符,它把左運算元和右運算元相乘賦值給左運算元
/=
除和賦值操作符,它把左運算元和右運算元相除賦值給左運算元
//賦值運算子
//= += -= /=
int intZ=1;
System.out.println(intZ+=1);
System.out.println(intZ-=1);
System.out.println(intZ*=1);
System.out.println(intZ/=1);
位運算子:
位運算是以二進位制位為單位進行的運算,其運算元和運算結果都是整型值。 位與'&',位或'|',位非'~',位異或'^',右移'>>',左移'<<',0填充的右移'>>>' 位運算的位與'&',位或'|',位非'~',位異或'^'與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的運算元和運算結果都是二進位制整數,而邏輯運算相應操作的運算元和運算結果都是邏輯值boolean型。
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
其他運算子:
三目運算子(?:)
三目運算子也被稱為三元運算子。該運算子有3個運算元,並且需要判斷布林表示式的值。該運算子的主要是決定哪個值應該賦值給變數。
//三目運算子?:
System.out.println((5>4)?"5>4":"5<4");
instanceof 運算子
該運算子用於操作物件例項,檢查該物件是否是一個特定型別(類型別或介面型別)。
//instanceof
String str1="Name";
boolean bool=str1 instanceof String;
System.out.println(bool);