前言
本期任務:畢向東老師Java視頻教程學習筆記(共計25天)
一、進制轉換
/*
需求:將十進制轉換成十六進制、八進制、二進制
思路;以十六進制爲例
1:利用與運算取最低4位
2:利用右移運算捨去4位
3:八進制每次操作3位,二進制每次操作1位
步驟:以十六進制爲例
1. 初始化一個整數(十進制)
2. 利用與運算取最低4位
3. 最低4位轉換成0-9,A-F
4. 利用右移運算捨去4位
*/
public class HexConversion {
public static void main(String[] args) {
int num = 60;
System.out.print(num + " = ");
// 轉換成十六進制
// int temp = num & 15;
// temp = (temp <= 9) ? (temp - 0 + '0') : (temp - 10 + 'A');
// char n2 = (char)temp;
//
// num >>>= 4;
// temp = num & 15;
// temp = (temp <= 9) ? (temp - 0 + '0') : (temp - 10 + 'A');
// char n1 = (char)temp;
//
// System.out.println("0x" + n1 + n2);
// 轉換成八進制
// int temp = num & 7;
// char n2 = (char)(temp - 0 + '0');
//
// num >>>= 3;
//
// temp = num & 7;
// char n1 = (char)(temp - 0 + '0');
//
// System.out.println("0" + n1 + n2);
// 轉換成二進制
// 效果同:System.out.println(Integer.toBinaryString(num));
char n6 = (char) ((num & 1) - 0 + '0');
num >>>= 1;
char n5 = (char) ((num & 1) - 0 + '0');
num >>>= 1;
char n4 = (char) ((num & 1) - 0 + '0');
num >>>= 1;
char n3 = (char) ((num & 1) - 0 + '0');
num >>>= 1;
char n2 = (char) ((num & 1) - 0 + '0');
num >>>= 1;
char n1 = (char) ((num & 1) - 0 + '0');
System.out.println("" + n1 + n2 + n3 + n4 + n5 + n6);
}
}
二、交換兩個整數的值
/*
需求:交換兩個整數的值
思路;
1:藉助第三個變量
2:利用加減法
3:利用異或運算
步驟:
1. 實現思路1
2. 實現思路2
3. 實現思路3
*/
public class IntegerSwap {
public static void main(String[] args) {
int m = 3;
int n = 4;
System.out.println("m = " + m + ", n = " + n);
// 1:藉助第三個變量
// int temp;
// temp = m;
// m = n;
// n = temp;
// System.out.println("m = " + m + ", n = " + n);
// 2:利用加減法
// m = m + n;
// n = m - n; // n = (m + n) - n
// m = m - n; // m = (m + n) - m
// System.out.println("m = " + m + ", n = " + n);
// 3:利用異或運算
m = m ^ n;
n = m ^ n;// n = (m ^ n) ^ n
m = m ^ n;// m = (m ^ n) ^ m
System.out.println("m = " + m + ", n = " + n);
}
}
三、對一個整數乘除2的整數倍
/*
需求:對一個整數乘除2的整數倍
思路:
左移一位,相當於乘以2
右移一位,相當於除以2
步驟:
初始化一個整數
左移2位,作爲乘以4的結果
右移2位,作爲除以4的結果
*/
package com.lanyu;
public class BitOperation {
public static void main(String[] args) {
int num = 30;
System.out.println(num << 2);
System.out.println(num >> 2);
System.out.println(num >>> 2);
}
}
四、給定月份,輸出對應季節
/*
需求:給定月份,輸出對應季節
思路;
1:多個if語句
2:switch-case
步驟:
1. 實現思路1(分區間段)
2. 實現思路2(分13種情況)
*/
public class MonthSeason {
public static void main(String[] args) {
// int month = 2;
int month = 13;
// 1. if(分區間段)
if (month >= 3 && month <= 5)
System.out.println(month + " Spring");
else if (month >= 6 && month <= 8)
System.out.println(month + " Summer");
else if (month >= 9 && month <= 11)
System.out.println(month + " Autumn");
else if (month == 12 || month >= 1 && month <= 2)
System.out.println(month + " Winter");
else
System.out.println(month + " Wrong Month");
// 2. switch-case(分13種情況)
switch (month) {
case 3:
case 4:
case 5:
System.out.println(month + " Spring");
break;
case 6:
case 7:
case 8:
System.out.println(month + " Summer");
break;
case 9:
case 10:
case 11:
System.out.println(month + " Autumn");
break;
case 12:
case 1:
case 2:
System.out.println(month + " Winter");
break;
default:
System.out.println(month + " Wrong Month");
}
}
}