前言
本期任务:毕向东老师Java视频教程学习笔记(共计25天)
- 原视频链接:黑马程序员_毕向东_Java基础视频教程
- day01:编写HelloWorld程序
- day02:操作符与条件选择语句
- day03:循环语句与函数
- day04:数组
- day07:继承、抽象类与接口
- day08:多态
- day09:异常处理
- day11:多线程
- day12:线程安全与同步机制
- day13:String类
- day14:集合(ArrayList,LinkedList,HashSet)
- day15:集合(TreeSet)和泛型)
- day16:集合(HashMap、TreeMap)
- day17:集合框架的工具类(Arrays、Collections)
- day18:IO流(字符流读写)
- day19:IO流(字节流、转换流读写)
- day20:IO流(File对象)
一、进制转换
/*
需求:将十进制转换成十六进制、八进制、二进制
思路;以十六进制为例
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");
}
}
}