今日内容:
1、扩展
计算机是如何做计算的 (加法-减法)
位运算符 了解
2、流程控制
在计算机中正数是使用原码来表示
原码:十进制对应的二进制数
负数是使用补码表示:
2 原码 0000 0010
反码 1111 1101
补码 1111 1110 (反码+1=补码)
-2 1111 1110
2-2 等价 2+(-2)
结论:计算机只做加法计算,减法也是加法计算出来的
算数运算符: + - * / % ++ --
比较运算符: > >= < <= == !=
逻辑运算 && & || | !
赋值运算符: = += -= *= /= %=
面试题:
一、交换两个变量的值 Demo3.java
1)不使用第三方变量交换两个变量的值
Demo3.java
方法一: 方法二:
a=2; a=2;
b=3; b=3;
a=b-a; (a=1) a=a+b; (a=5)
b=b-a; (b=2) b=a-b; (b=2)
a=a+b; (a=3)先减后加 a=a-b; (a=3)先加后减
2)使用第三方变量
二、在Java中 num+=3; 和num=num+3; 相同吗?
不相同 Demo4.java
num=num+3; 是两个运算符,在计算过程中需要强制类型转换
num+=3; 是一个运算符,在计算过程中会自动进行类型转换
位运算 & 位与
| 位或
~ 按位取反
^ 异或
>> 向左位移动
<< 向右位移动
>>> 无符号向左移动
& 位与 同时为1结果为1 否则结果为0
2>3 & 3>5 逻辑与
8&2 位与
位运算都是转换成二进制后的计算
8 00001000
2 00000010
& 00000000
| 位或 只要有一个为1,结果为1
8|2
8 00001000
2 00000010
| 00001010
~ 按位取反
8 00001000
~ 11110111
^ 异或 相同为0、不同为1
8 00001000
2 00000010 8^2
00001010
位移运算
>>有符号向右位移,如果是正数高位补0,如果是负数高位补1
00000100
00000001
>>>无符号右移,高位补0
<< 向左位移 ,后面补0
流程控制:
1、顺序结构:
按照编写代码的顺序,从上而下逐行翻译、执行
特点:每行代码都能被执行到,且被执行一次。
2、选择结构:看条件
2.1条件为true(成立),执行代码块
if(条件){
//条件为true执行
}
2.2 条件为true,执行代码块1,否则(false)执行代码块2
if(条件){
//代码块1
}
else{
//代码块2
}
//三目运算符是if-else的简化
2.3、多重if选择结构
if(条件1){
//1
}else if(条件2){
//2
}else if(条件3){
//3
}else{
//4
}
案例:输入百分制成绩,输出对应的5分制成绩
90分以上 优秀
81-90 良好
71-80 一般
60-70 及格
60以下 不及格
2.4、嵌套if选择结构
if(条件1){
if(条件2){
}
}
案例:如果体检合格:
检查你的面试情况 HR 通过 技术 通过
入职手续
否则{
不能入职
}
【经验】
1、变量最好要初始化
数值类型初始化为0
char 空格
String ""
boolean false
因为变量要先初始化,后使用
2、通常写if 就要带else
在Java中{}代码块
变量的生命周期:
1、存在:执行到声明变量的那行代码,内存分配空间
2、清空:执行到变量所在语句块的 } 时,变量被清空,变量声明(生命)周期 到 } 截止
switch 选择结构 可以和多重if选择结构等价
语法:
switch(表达式){
case 值1:
//代码
break;
case 值2
//代码
break;
default:
//代码
break;
}
【语法说明】
1、switch后的表达式计算结果类型只能是如下6个
byte short int char 枚举
从Java7开始还支持String
2、switch后面可以是变量、也可以是表达式
case后只能是值
3、break不是必须的,如果当前case省略了break,那么紧挨着的下一个case会自动执行
4、default不一定放在最后,可以放在switch里的任何位置
但是通常放在最后,因为java会最后执行default,与代码位置无关
案例:Menue.java
switch 开关
case 情况 情形
break 跳出
default 默认 除了以上情形
switch 和if 可以通用 switch 等值判断条件下 比if简洁
if 在范围判断条件下 比switch简洁
但是在等值判断的情况下,switch比if更简洁
不适用于范围的判断
、、、、、、、、、、、、、、、、、、、、、、、、、、
今日内容总结:
1、计算机执行加减法的运算过程 了解
原码 反码 补码
2、面试题 掌握
不使用第三方变量交换两个变量的值
num+=1; num=num+1 区别
3、位运算 对二进制的计算 了解
& | ~ ^
>> 有符号右位移
<< 左位移
>>> 无符号右位移
4、流程控制
顺序结构
选择结构
if
if-else
if-else if-else
if(){if(){}}
switch