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));
}
}