1. Switch结构语句
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
break表示中断,结束的意思,用来结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
case的值可以相同吗?不能
ldefault可以省略吗?可以
lbreak可以省略吗?可以
ldefault的位置一定要在最后吗?
关于switch表达式的类型要求:
l表达式的取值:byte,short,int,char
nJDK5以后可以是枚举
nJDK7以后可以是String
2. 常量及进制转换
Java中常量分类
字符串,整数,小数,字符,布尔
自定义常量(面向对象部分讲)
进制
Java针对整数常量有4种表示形式:
二进制
八进制
十进制
十六进制
技能点1:将其他进制转换为10进制
a) 0b1111,0234,0x789 这些转换为十进制分别是多少
0b1111:2^3+2^2+2^1+2^0=8+4+2+1=15
0234:2*64+3*8+4=156
0x789:7*256+8*16+9=1929
技能点2:将10进制转换为其他进制
b) 将20分别转换为二进制,八进制,十六进制
0b10100
024
0x14
3. 位运算符
<< 左移 将操作数的二进制数整体左移指定位数,左移之后的空使用“0”来补充
>> 右移 将操作数的二进制数整体右移指定位数,右移之后的空使用“符号位”来补充
如果是正数,使用“0”补充
如果是负数,使用“1”补充
>>> 无符号右移,将操作数的二进制码整体右移指定位数,
右移之后的空位使用“0”来补充
& 相同位的两个数字都为1,则为1;若有一个不为1,则为0 任何二进制位和0进行&运算,结果是0;和1进行&运算,结果是它本身 |
| 相同位只要一个为1即为1。 任何二进制位和0进行|运算,结果是原值,和1进行|运算,结果是1 |
^异或 如果某位不同则该位为1, 否则该位为0. 任何相同二进制位进行^运算,结果是0;不相同的二进制位运算结果是1 |
一、 扩展学习(自学)
第一: 要做位运算,正数按照之前的方式去计算就可以 负数,必须要先通过原码--反码--补码, 实际上计算的时候,都是按照补码来的
第二: 做完位运算之后,如果想知道当前这个补码代表是哪个数字 补码--》反码---》原码
在计算机内部,有符号数有3种表示法:原码,反码,补码 所有数据的运算都是使用补码进行的,即进行位运算的时候,需要先得到补码 正数 原码,反码,补码都相同
负数 原码: 二进制表示法,即最高位为符号位, “0”表示正数, “1”表示负数
反码 负数的反码就是对其原码逐个取反,但符号位不变。
补码 负数的补码是在其反码的末位加1
正数10 负数 -10 分别求出他们的原码,反码,补码
正数10 原码00001010 反码00001010 补码00001010
负数-10 原码:10001010 反码:11110101 (符号位不变,其他位取反) 补码:11110110
所以对于负数的位运算,需要先求出其补码
-10>>2 11110110 1111110110
11111101 由补码来求原码 补码-1得到反码 反码逐个取反,得到原码
补码:11111101 反码:11111100 原码:10000011
就是最终要看到结果是多少,需要计算出原码 |
作业:
1. 某朋友说,如果存款超过100万,则入手宝马X5,否则超过50万,则入手奥迪A6,否则超过20万,则入手比亚迪,否则超过10万则玩玩极品飞车游戏,请编写一个购车选择程序,根据输入的金额,提示可以购买的车型。 代码入下:
2. 从键盘录入学员的成绩x,根据学员的成绩x给予奖励,如果成绩x小于等于80分的不予奖励并罚一个iphone6s,成绩81<=x<=90则奖励一个iphone4,如果成绩91<x<=100则奖励一个iphone4,再奖励一个ipad
代码如下:
3. 从键盘录入输入3 个数a,b,c,按从大到小进行输出(难度大)
代码如下:
4. 计算个人所得税,关乎大家的生计 要求使用程序实现个人所得税计算器,实现从键盘录入当月工资收入,输出应缴个人所得税。
工资个税的计算公式为: 应纳税额=(工资薪金所得 -“五险一金”-扣除数)×适用税率-速算扣除数 扣除标准:个税按3500元/月的起征标准算 我们此处简化五险一金,假设为0,则 如果某人的工资收入为5000元,他应纳个人所得税为:(5000—3500)×3%—0=45(元)。 税率表如下:
|
代码如下:
import java.util.Scanner; public class Shui{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入工资所得"); double money = sc.nextDouble(); double shui; if(money<=1500){ shui = money*0.03; }else if(money<=4500){ shui = 45+(money-1500)*0.1-105; }else if(money<=9000){ shui = 240+(money-4500)*0.2-555; }else if(money<=35000){ shui = 585+(money-9000)*0.25-1005; }else if(money<=55000){ shui = 585+(money-35000)*0.3-2755; }else if(money<=80000){ shui = 585+(money-35000)*0.35-5505; }else{ shui = 585+(money-80000)*0.45-13505; } System.out.println("你的个人所得税是:"+shui); } } |
二.二进制转换
一、课堂练习切记要多做!!! 一、请用最有效率的方式写出计算2乘以8、2乘以32的运算方式 2<<3 2<<5 二、进制转换练习 a) 0b1111,0234,0x789 这些转换为十进制分别是多少 0b1111:2^3+2^2+2^1+2^0=8+4+2+1=15 0234:2*64+3*8+4=156 0x789:7*256+8*16+9=1929 b) 将20分别转换为二进制,八进制,十六进制 0b10100 024 0x14
|