class BitTest {
public static void main(String[] args) {
System.out.println("13 << 2 : " + (13 << 2));
System.out.println("-13 << 2 : " + (-13 << 2));
System.out.println("13 << 27 : " + (13 << 27));
System.out.println("13 << 28 : " + (13 << 28));
System.out.println("13 >> 2 : " + (13 >> 2));
System.out.println("-13 >> 2 : " + (-13 >> 2));
System.out.println("-13 >>> 2 : " + (-13 >>> 2));
//練習:如何交換兩個int型變量的值
int m = 10;
int n = 20;
System.out.println("m = " + m + ", n = " + n);
//交換兩個變量的值(重點)
//方式一:推薦!
//int temp = m;
//m = n;
//n = temp;
//方式二:使用有局限性:① 可能會超出int的範圍 ② 資料類型的局限性
//m = m + n;//10 + 20
//n = m - n;//30 - 20
//m = m - n;//30 - 10
//方式三:使用有局限性:資料類型的局限性
m = m ^ n;
n = m ^ n;
m = m ^ n;
System.out.println("m = " + m + ", n = " + n);
}
}
3. 三元運算符
說明
格式: (條件表達式)? 表達式1 : 表達式2
說明1: ① 條件表達式的結果為boolean
② 如果條件表達式的結果為true,則傳回表達式1。反之,如果條件表達式的結果為false,則傳回表達式2
③ 表達式1和表達式2滿足一緻性。
說明2:三元運算符可以嵌套使用
說明3:凡是可以使用三元運算符的地方,都可以改寫成if-else結構。反之,不成立。
凡是既可以使用三元運算符,又可以使用if-else結構的地方,建議使用三元運算符。因為執行效率高一些。
代碼示範
class SanYuanTest {
public static void main(String[] args) {
//擷取兩個數的較大值
int m = 10;
byte n = 15;
int max = (m > n)? m : n;
System.out.println("較大值為:" + max);
//String s = 12;//編譯不通過
String maxString = (m > n)? "m大" : "n大";
n = 10;
String maxString1 = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大");
System.out.println(maxString);
System.out.println(maxString1);
//練習:擷取三個數的最大值
int a = 10;
int b = 43;
int c = 5;
int max1 = (a > b)? a : b;
int max2 = (max1 > c)? max1 : c;//不建議: int max2 = (((a > b)? a : b) > c)? ((a > b)? a : b) : c;
System.out.println(max2);
}
}
class RandomTest {
public static void main(String[] args) {
//random():傳回一個>= 0.0 且 < 1.0的double型值
double value = Math.random();
System.out.println(value);
//擷取[0,100]範圍内的随機數:
int score = (int)(Math.random() * 101); //[0,1) -> [0,101) -> [0,100]
System.out.println(score);
//擷取[10,30]範圍内的随機數:
int value1 = (int)(Math.random() * 21 + 10); // [0,1) -> [0,21) -> [10,31) ->[10,30]
//擷取[a,b]範圍内的随機數:(int)(Math.random() * (b - a + 1) + a)
}
}
5. switch-case結構
結構
switch(表達式){
case 常量1:
語句1;
// break;
case 常量2:
語句2;
// break;
… …
case 常量N:
語句N;
// break;
default:
語句;
// break;
}
說明
① switch中的表達式,可以是如下的一些資料類型:byte \ short \ char \ int \ 枚舉類型(JDK5.0) \ String (JDK7.0)
② 根據switch中的表達式的值,依次比對case中的常量。一旦比對成功,則進入相應的case的執行語句中執行。并考慮執行後續
的case結構。直到遇到break或switch-case結構執行結束為止。
或
③ switch-case要想實作多選一的效果,需要使用break。
③ default 相當于if-else中的else結構。是可選的,位置也是靈活的
④ switch-case 實作的結構都可以轉換為if-else。反之,不成立。
凡是既可以使用switch-case,又可以使用if-else結構的地方,建議使用switch-case。因為執行效率高一些。
代碼示範
class SwitchTest {
public static void main(String[] args) {
int num = 2;
switch(num){
case 0:
System.out.println("Zero");
break;
case 1:
System.out.println("One");
break;
case 2:
System.out.println("Two");
break;//跳出目前的switch-case結構
case 3:
System.out.println("Three");
break;
case 4:
System.out.println("Four");
break;
default:
System.out.println("Other");
//break;
}
//##########################
String season = "summer1";
switch (season) {
case "spring":
System.out.println("春暖花開");
break;
case "summer":
System.out.println("夏日炎炎");
break;
case "autumn":
System.out.println("秋高氣爽");
break;
case "winter":
System.out.println("冬雪皚皚");
break;
default:
System.out.println("季節輸入有誤");
break;
}
}
}