int i = 3; int j = 5; int sum = i + j;
注意 優先序、結合性;優先序1的遞減 為 -- (兩個連續的減號)
使用小括號 ( ) 改變運算優先順序
int sum = 3 + 4 * 5; // sum = 23 int add = ( 3 + 4 ) * 5; // add = 35 int a=1, b=2, c=3; a = b = c = 4; // a=?, b=?, c=?
參考程式 ArithmeticOP.java
public class E01_ArithmeticOP { public static void main(String[] args){ int a = 5, b = 2; double d = 2.0; System.out.printf("a+b=%d\n",a+b); System.out.printf("a-b=%d\n",a-b); System.out.printf("a*b*d=%f\n",a*b*d); System.out.printf("a/b=%d\n",a/b); // 小數點後被捨去 System.out.printf("a/d=%f\n",a/d); System.out.printf("a%%b=%d\n",a%b); // 注意 %% } }
參考程式 IncDecrementOP.java
public class E02_IncDecrementOP { public static void main(String[] args){ int a = 1, b = 1; System.out.printf("a++=%d\n",a++); System.out.printf("--b=%d\n",--b); System.out.printf("a=%d\n",a); System.out.printf("b=%d\n",b); // 先加 a = 1; b = ++a; System.out.printf("先加 a=%d, b=%d\n", a, b); // 後加 a = 1; b = a++; System.out.printf("後加 a=%d, b=%d\n", a, b); // 先減 a = 7; b = --a; System.out.printf("先減 a=%d, b=%d\n", a, b); // 後減 a = 7; b = a--; System.out.printf("後減 a=%d, b=%d\n", a, b); } }
字串 + 字串 ; 字串 + 數字
參考程式 ConcatenateOP.java
public class E03_ConcatenateOP { public static void main(String[] args){ String str1 = "123"; String str2 = str1 + 10; System.out.printf("str2=%s\n",str2); int i = 123; double d = 3.12; System.out.printf("i+d=%f\n",i + d); System.out.printf("i+\" \"+d=%s\n",i + " " + d); System.out.println("i = " + i + ", d = " + d); System.out.printf("i=%d, d=%f\n", i, d); System.out.printf("i=%d, d=%g\n", i, d); } }
結合指派,將等號左邊的變數,再放到等號右邊
a += b; a = a + b; a -= b; a = a - b int a=2, b=3; a -= b + 4; // a= ?
參考程式 AssignOP.java
public class E04_AssignOP { public static void main(String[] args){ int a = 1; a += 2; // a = a + 2 String s = "1"; s += 2; // s = s + 2 System.out.printf("a=%d\n",a); System.out.printf("s=%s\n",s); } }
參考程式 CompareOP.java
public class E05_CompareOP { public static void main(String[] args){ int a = 1, b = 1; System.out.printf("a=%d, b=%d\n", a, b); System.out.printf("a > b=%b\n",a > b); System.out.printf("a >= b=%b\n",a >= b); System.out.printf("a == b=%b\n",a == b); // 注意2個等號 System.out.printf("a != b=%b\n",a != b); System.out.printf("100 == 11.11/0.1111=%b\n",100 == 11.11/0.1111); // 浮點數有誤差 } }
參考程式 AndOP.java
參考程式 OrOP.java
參考程式 XorOP.java
參考程式 NotOP.java
public class E06_LogicOP { public static void main(String[] args){ // And int money = 30000; //現金 int day = 7; //假期天數 System.out.print("澳洲團成行:"); System.out.println(money>=40000 && day>=7); // short-circuit 與 side effect int score = 53, miss=3; boolean pass; pass = score >= 60 && miss++ < 5; // short-cut System.out.printf("&& pass=%b, miss=%d\n", pass, miss); score=53; miss=3; pass = score >= 60 & miss++ < 5; System.out.printf("& pass=%b, miss=%d\n", pass, miss); // Or boolean isDiesel = true; int cc = 1800; //排氣量 System.out.print("購買汽車:"); System.out.println(isDiesel || cc<=1500); // Xor boolean MassageChair = true; //送按摩椅 boolean skylight = true; //送天窗 System.out.print("成交:"); System.out.println(MassageChair ^ skylight); // Not int age = 16; //年齡 System.out.print("未滿18歲:"); System.out.println(!(age>=18)); } }