day02回顾
常量
进制
变量:必须有初始化值
数据类型转换:boolean不能与其他转换,隐式转换,强制转换(明确数据在小类型的范围内)
运算符
算术运算符
int i = 10;
i++;
System.out.println(i++);//11,先用后加
赋值运算符
day03课堂笔记
逻辑运算符
用于连接布尔表达式
表达式:用运算符连接的式子
. 由变量常量组成
哪种运算符连接的就叫哪种表达式
& 逻辑与 并且 有假则假全真则真(左右都运算)
| 逻辑或 或者 有真则真全假则假(左右都运算)
^ 逻辑异或 相同为假不同为真
! 逻辑非 不是 针对一个表达式的操作 真变假 假变真
从结果看,&&和&,||和|的结果一样
&& 短路与 本身也是逻辑与 如果前面false后面不再执行
|| 短路或 本身也是逻辑或 如果前面true后面不再执行
开发常用:
&&,||
位运算
对二进制位补码的运算
<<左移 二进制数据向左移动,高位丢弃,右边空出的位补0(负的可能变成正的)相当于*2^n
>>右移 二进制数据向右移动,低位丢弃,高位是0补0,是1补1
>>>无符号右移 二进制数据向右移动,无论最高位是1还是0,左边高位都补0
左移右移n位其实就是将数据增大或者缩小2^n
&按位与
|按位或
^按位异或 特点:一个数据被同一数据异或两次数据不变----实现简单的加密
~按位取反:所有的0变1,1变0,注意与反码操作的区别
注意:计算的时候,一定要先得到二进制数,然后得到反码补码,然后参与运算
得到的额结果也是补码的形式,再反推出原码,计算其十进制
面试题:
int a = 10;
int b = 20;
//方案1:采用临时变量(开发用)
//int temp = a;
//a = b;
//b = temp;
//System.out.println(a+"****"+b);
//方案2:使用位^运算(面试使用)
//特点:一个数据被同一数据异或两次数据不变
//System.out.println(a ^ b);//30
//System.out.println(a ^ b ^ b);//10,a的值
//System.out.println(a ^ b ^ a);//20,b的值
a = a ^ b;
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//此时b获得a的值,a = a ^ b ^ a
注意:
测试程序的时候,,分段进行,不要让其他代码造成我想要的看到的结果的混乱
**变量是会变的!!
条件运算符(三元运算符)
格式:
(条件表达式)?表达式1:表达式2
条件表达式为true运行表达式1,为false则表达式2
注意:条件表达式只能是true或者false
复杂的表达式要加括号
if语句
if格式1
//格式化良好
if (条件表达式){//执行结果肯定是boolean
//条件为true执行判断体代码
}
//目前必须把{}加上
if (条件表达式);
{//执行结果肯定是boolean
//条件为true执行判断体代码
}//此时,if与下边的{}是独立的两部分了
局部代码块:它是方法里的{}这里面的代码就是局部代码块
作用就是控制变量的生命周期,使变量尽早从内存中消失
main(){
int x = 10;
int x = 20;
.....
{
int z = 30;
}
}
全局变量:
定义在方法外面,类的里面
全局变量如果没有显示的初始化值,会有一个默认的,
int类型是0,引用类型的是null,double类型是0.0
局部变量
定义方法里面的变量
使用之前局部变量必须声明并且初始化
练习:
考试成绩分等级:
90-100 A等。
80-89 B等。
70-79 C等。
60-69 D等。
60以下 E等。
if格式2:效果等价于三元运算
if(条件表达式)
{
语句体1
}
else
{
语句体2
}
//if判断条件为真,走if下的{}
//否则走else
if格式3:
if(条件表达式)
{
语句体1
}
else if(条件表达式)
{
语句体2
}
.....
else
{
语句体3//前面的都不走,就运行改句
}
注意:
单独的else后不能跟条件表达式
最后的else可以省略,但是建议写上,除非明确不需要
条件一旦满足其中之一的条件,if语句即终止
在第三种格式中,不要让多个表达式同时为真(注意业务逻辑中的逻辑边界问题)
案例:定义x y
如果x>3,y=2*x
如果0<x<=3,y=5
如果x<0,y=10-2*x
键盘录入:
首先在类的上面导包:
import java.util.Scanner;
class Demo
{
main()
{
//创建对象
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数据");
//键盘录入
int i = s.nextInt();//获取键盘录入的下一个int值,如果不是int报异常
}
}
与三元运算符(条件运算符)
完全用if...else的格式取代,条件运算符某些情况下可以简化if-else(简单赋值语句时才可以)
switch语句
switchi格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
default
执行语句
}
解释:
break不建议省略
switch:使用的是switch语句
表达式可以取值:byte short int char
jdk5+可以枚举
jdk7+可以字符串
case 取值1:选项的值
break Switch遇到它就结束了
default 当所有取值都不匹配时运行该句
执行流程,
从上往下用表达式的值与case值进行匹配,若匹配,则执行该case下的语句
如果没有匹配就执行default
switch注意事项
default可以省略,但是一般不省略,除非非常明确,
相当于if的else,它控制者所有非正常情况
break可以省略吗?
放在最后的default的break是可以省略的
放在case中的break可以省略,可能结果有问题,所以一般不省略
default可以放在最前,但是一般放在最后(case与default没有顺序)
Switch语句什么时候结束:
遇到break或者执行到Switch语句的末尾
建议:
不要省略default,并放在最后
每个case执行语句以及default执行语句都要跟上break
考试题目,故意不把default放在最后,故意省略break
特点:Switch语句执行结束条件:遇到break或者执行到语句末尾
int x = 4;
switch (x)
{
default:
System.out.print("d");1
case 1:
System.out.print("a");2
case 2:
System.out.print("b");3
case 3:
System.out.print("c");4
}
执行顺序:
2-3-4此时没有匹配选项,不输出
运行1(d),1没有break,继续向下执行
2-3-4(a b c )
day03重点
逻辑运算符
&& ||
位运算
面试题:快速计算2*8
交换变量(定义第三方变量,位异或)
条件运算符:三元运算
简单的if-else语句
if语句
三种格式以及注意事项
练习键盘录入
考试成绩分等级
|