package com.zhiyou100;
public class Demo01_Operator {
public static void main(String[] args) {
/*
運運算元 程式中一種很特殊的符號 連執行緒式中需要參與運算的變數(前提條件是該變數有值)
算術運運算元
+ - * / % ++i i++ i自加1; --i i-- i自減1
賦值運運算元 +=
比較運運算元(關係運算子) 數位(整數,小數) 表示式(變數+運運算元)
邏輯運運算元 與 & 或 | 非 !
位運運算元
三目運運算元 ?:
語法格式:
布林型別值 ? 該布林型別值是真的結果值 : 該布林型別值為假的結果值
結果值要根據布林型別值表示式,當表示式為真,結果就是緊鄰問號 "?" 後面的結果值
當表示式為真,結果就是緊鄰冒號 ":" 後面的結果值
*/
// + 第一個作用:連線變數(變數的型別:基本+參照(String)) 通常情況下進行字串拼接
String name = "張三";
int age = 20;
System.out.println(name+ age);
// + 第二個作用:相加運算
int a1 = 10;
int b1 = 20;
int c1 = a1+b1;
System.out.println(c1);
// + 第三個作用:正數>0
int a2 = +10;
int b2 = +a2;
System.out.println(b2+ " "+ a2);
// - 第一個作用:相減運算
int a3 = 20;
int b3 = 10;
int c3 = a3-b3;
System.out.println(c3);
// - 第二個作用:負數 <0
int a4 = 20;
int b4 = -20;
int c4 = -a4;
System.out.println(c4);
// * 重量級 作用:乘法運算
int a5 = 10;
int b5 = 20;
int c5 = a5*b5;
System.out.println(c5);
// / 作用:除法運算
int a6 = 13;
int b6 = 5;
int c6 = a6/b6;
System.out.println(c6);
// % 作用:求餘數(取模)
int a7 = 13;
int b7 = 5;
int c7 = 13%5;
System.out.println(c7);
// / 正數 除以 負數
System.out.println(a7 / (-b7));
System.out.println(a7 % (-b7));
//在除法運算中·,餘數的正負隨著被除數走,但是商的正負(只要除數和被除數其中有且僅有一個為負數即為負數),否則為正數
// ++ 自加1
int number = 10;
number += 5;
System.out.println("number="+ number);
int number2 = 10;
number2++;
System.out.println("number2="+ number2);
int num3 = 10;
int plus = 5;
num3 += plus++;
//如果變數在++運運算元左邊,那麼在運算過程中,先進行++運運算元左邊的運算,在執行++運算
System.out.println(plus);// 6
System.out.println(num3);// 15
//變數在++運運算元的右邊
int num4 = 10;
int plus2 = 5;
num4 += ++plus2;
System.out.println("num4="+ num4);//16
System.out.println("plus2="+ plus2);//6
//如果變數在++運運算元的右邊,那麼在運算過程中,先進行++運算,再執行其他運算
// -- 自減運算
int num5 = 10;
int reduction = 5;
--num5;
System.out.println(num5);
}
}
package com.zhiyou100;
//賦值運運算元
public class Demo02_Operator {
public static void main(String[] args) {
/*
賦值運運算元:就是給變數賦值(初始化)
= 等號代表的意思是把等號右邊的資料賦值給等號左邊的變數
+= 相加賦值
-= 相減賦值
*= 相乘賦值
/= 相除賦值
*/
int a;
a = 10;
int a1 = 10;
/*
a1 = a1+10;//20
等價於 a1 += 10;
*/
//a1 += 10;
a1 = a1+10;//20
System.out.println("a1="+ a1);
int b1 = a1+a1;
// -= 相減賦值
int a2 = 10;
//a2 = a2-5;
a2 -= 5;
System.out.println("a2="+ a2);
// *= 相乘賦值
int a3 = 10;
//a3 = a3*5;
a3 *= 5;
System.out.println("a3="+ a3);
// /= 相除賦值
int a4 = 13;
//a4 = a4/5;
a4 /= 5;
System.out.println("a4="+ a4);
// %= 取餘賦值
int a5 = 13;
//a5 = a5 % 5;
a5 %= 5;
System.out.println("a5="+ a5);
}
}
package com.zhiyou100;
public class Demo03_Operator {
public static void main(String[] args) {
/*
比較運運算元
> < == >= <= !=
大於 小於 等於 大於等於 小於等於 不等於
1.比較運運算元中的「 = 」是「 == 」,而不是「 = 」
2.比較運運算元運算的結果就是布林型別值:true/false
*/
int a = 20;
int b = 10;
System.out.println("a > b: "+ (a > b));//false
System.out.println("a < b: "+ (a < b));//true
System.out.println("a == b: "+ (a == b));//false
System.out.println("a != b: "+ (a != b));//true
System.out.println("a <= b: "+ (a <= b));//true
System.out.println("a >= b: "+ (a >= b));//false
//比較運運算元前後都是語句
System.out.println("a++ > b--: "+ (a++ > b--));
}
}
package com.zhiyou100;
//邏輯運運算元
public class Demo04_Operator {
public static void main(String[] args) {
/*
邏輯運運算元: 與 & 或 | 非 !
在程式中,運算的是布林型別值(可以是具體的true或者false,也可以是布林型別的表示式)
結果依然是布林型別值。
*/
boolean bool = true;
boolean bool2 = false;
boolean bool3 = bool & bool2;
System.out.println(bool3);
//說明:與運運算元 在程式運算過程中,只要有一個fals,結果就是false,否則為true
// 或運算 |
boolean var01 = false;
boolean var02 = false;
boolean var03 = var01 | var02;
System.out.println(var03);
//說明:或運算,在程式運算過程中,只要有一個為true,結果就為true,否則為false。
// 非運算 !
boolean var04 = false;
boolean var05 = true;
boolean var06 = !var04;//true
//說明:非運算,在程式中運算中,一般只能連線一個布林型別值,而且非運運算元只能放在布林型別值的左邊
//結果就是對連線的該布林型別值取相反結果
//互斥或 ^ 互斥或運運算元
boolean var07 = false;
boolean var08 = true;
boolean result = var07 ^ var08;
System.out.println(result);
//說明:互斥或運運算元,在程式運算中,同為false,異為true
// 如果互斥或運運算元連線的左右布林型別變數(表示式)的值不同,結果為true
// 如果互斥或運運算元連線的左右布林型別變數(表示式)的值相同,結果為false
//備註:如果和或運運算元做對比,不同之處:當左右都為true的時候,結果為false
//拓展:與& && 或| || 非! 互斥或 ^
boolean bool4 = true;
boolean bool5 = false;
boolean bool6 = bool4 && bool5;
System.out.println(bool6);
//在程式中,與運運算元,通常使用&&
/*
&與&&異同點:
相同點:都是做與運算
不同點:&&可以實現斷路
備註:短路效果,當&&符號左邊的布林型別值可以確定為false的時候,那麼在執行到&&的時候,會發生跳躍,&&後面的表示式不執行
或運運算元||效果等同與&&
*/
boolean bool7 = true;
boolean bool8 = false;
boolean bool9 = bool4 || bool5;
System.out.println(bool9);
//當||符號左邊的布林型別值可以確定為true的時候,那麼在執行到||的時候,會發生跳躍,||後面的表示式不執行
}
}
package com.zhiyou100;
public class Demo05_Operator {
public static void main(String[] args) {
/*
位運運算元 位
位 bit 計算機中最小的資訊單位為bit(位) 一個bit上儲存的是0或者1
計算機中最小的儲存單位是byte(位元組) 1byte=8bit
二進位制的運算
與位運算 &
或位運算 |
非位運算 ×
互斥或位運算 ^
移位位運算 >>右移 <<左移 >>>無符號右移動
*/
// 與位運算 &
int a = 13;
int b = 5;
int c = a & b;//5
System.out.println(c);
// 說明:在與位運算中,如果參與運算的二進位制值中有一個為0,那麼運算的結果即為0
// 當前後運算的二進位制的長度不一致時,那麼程式會在短的那一方高位補0,短几位就補幾個0,保持長度一致
//或位運運算元
int a1 = 28;// 011100
int b1 = 36; // 100100
int c1 = a1 | b1; // 111100=60
System.out.println(c1);
//互斥或運運算元 同為0,異為1
int a2 = 123;// 01111011
int b2 = 134;// 10000110
int c2 = a2 ^ b2;// 11111101
System.out.println(c2);//253
}
}
package com.zhiyou100;
// 三目運運算元 ?:
public class Demo06_Operator {
public static void main(String[] args) {
/*
三目運運算元 ?:
語法格式:
布林型別值 ? 該布林型別值是真的結果值 : 該布林型別值為假的結果值
結果值要根據布林型別值表示式,當表示式為真,結果就是緊鄰問號 "?" 後面的結果值
當表示式為真,結果就是緊鄰冒號 ":" 後面的結果值
*/
//第一種:直接在輸出語句使用
int a = 10;
int b = 20;
System.out.println(a > b ? "a>b" : "a<b");
System.out.println(a > b ? true : false);//true
System.out.println(a <= b ? "a<=b" : false);
System.out.println(a >= b ? a : b);//20
//第二種用法:在語句中使用(不是輸出語句) 賦值運算中
int c = a > b ? a : b;//20
System.out.println(c);
String d = a > b ? "是真的嗎?" : "你是假的";
System.out.println(d);
/*
說明:如果三目運運算元是在輸出語句中,那麼對三目運運算元的結果值真假的資料型別不要求
如果不在輸出語句中,在其他語句中,如賦值運算語句,那麼就要嚴格控制三目運運算元的結果值真假的資料型別
真假的結果值型別要一致,保持和賦值運算中的變數的資料型別一致
*/
}
}