位运算符
基本的位运算符:
&:有零则零
|:有一则一
^:相同为零不同则为一
特点:1)一个数据被另一个数据位异或两次还是其本身
2)实现两个数据间的交换
~:按位取反,零变一,一变零
位移符号:
<<:左移:将数据(补码)左移动,右边不够的补零,将左边多余部分自动丢掉
>>:右移:将数据(补码)右移动,如果最高位为0,左边补0;如果最高位为1,左边补1,将右边多余部分自动丢掉
>>>:无符号右移:无论最高位是1还是0,始终左补零
结论:
<<:将<<符号左边的数据(补码)成以2的移动次幂
>>:将>>符号左边的数据(补码)除以2的移动次幂
三目运算符
格式:
(表达式)?执行语句1:执行语句2;
键盘录入Scanner
JDK提供了一个Scanner文本扫描了
格式:
//导入包类,卸载class上面
import java.util.Scanner
//创建键盘录入数据对象
Scanner sc = new Scanner(System.in);
//提示并录入数据
System.out.println("请输入一个数据");
int num = sc.nextInt();
//直接输出
System.out.println("你输入的数据为:"+num);
流程控制语句之顺序结构语句
流程控制语句分为三类:
顺序结构语句
当进入到类中之后,jvm调用main方法,代码由上而下依次加载
除非一种特例:当jvm退出了就不会进行执行了!
后期System类中有一个功能:exit(int status) 参数里面为0,表示正常终止jvm
选择结构语句
循环结构语句
举例:
class ShunXuDemo{
public static void main(String[] args){ //程序的入口
//定义变量
int a = 10 ; //局部变量(在方法定义中的变量)
System.out.println("a:"+a) ;
System.out.println("程序开始了...") ;
System.out.println("我爱JavaEE") ;
//让Jvm退出(正常终止正在运行的jvm),main方法就结束了
System.exit(0) ;
System.out.println("程序结束了...") ;
System.out.println("over...") ;
}
}
if选择结构语句
三种格式:
格式1:
if(表达式){
语句; 判断表达式是否成立;如果成成立执行语句
} 不成立不会进去if语句
格式2:if(表达式){
语句1; 1)先判断表达式是否成立,如果成立,执行执行语句1;
}else{ 2)如果不成立执行语句2
语句2;
}
格式3:if(表达式1){ 1)判断表达式1是否成立,若成立则执行语句1
语句1; 2)若表达式1不成立则判断表达式2是否成立,若成立则执行语句2
}else if(表达式2){ 3)若表达式不成立,则判断表达式3是否成立,若成立则执行语句3
语句2; ...
}else if(表达式3){ ...
语句3 若以上表达式都不成立则执行语句n+1
...
...
...
}else{
n+1;
}
if语句格式2和三元运算符的区别:
if是一个流程控制语句,不仅能够表示具体的结果,而且还可以一个输出语句体现;
但是三元运算符,一般情况:就是最终是具体的结果体现!
if范围大于三元;能够使用三元运算符实现的一定能够使用if格式2;反之,不一定!
Switch语句
Switch语句格式:
Switch(表达式){
语句1:
break;
语句2:
break;
....
....
default:
语句n
break;
}
1)switch中的表达式的结果值和case语句匹配,值1和结果匹配,就执行语句1,遇见break,switch结束;
2) 值1和switch表达式结果不匹配,继续判断值2是否匹配,如果匹配,就执行语句2,switch语句结束
...
...
3)如果case语句后面值都不匹配,这个执行default语句,执行语句n,
swirch语句执行到末尾结束.
Switch语句跟的表达式是什么数据类型
基本数据类型:byte,short ,int ,char
JDK5以后可以是枚举类型(引用类型)
JDK7以后可以是字符串...String
Switch语句注意事项:
1)在switch语句中,case语句后面只能是常量
2)在case语句中,最好携带上break,如果不带break会造成case穿透!
3)default语句是在case中没有匹配的结果,它可以在语句中任何位置,不影响执行流程;如果在语句中,那么最好带上break,否则case穿透了;在语句末尾,break省略!
4)switch语句的结束条件:
a)遇见break,switch语句结束
b)程序默认执行到末尾
for循环语句和执行条件
格式:
for(1)初始化语句;(2)条件表达式;(4)控制体语句){
(3)循环体语句;
}
执行条件:
1),进行初始化赋值(执行一次)
2),条件成立,--->执行 3)循环体语句
4)执行控制体语句---->再次执行2),若条件成立,---->继续执行3)
...
...
一直执行到2)条件不成立,for循环结束
while循环
while循环格式:
初始化语句;
while(条件表达式){
循环体语句;
控制体语句;
}
执行语句:
1)先判断初始化值
2)判断条件表达式是否正确,正确则进入循环体
3)执行控制语句----继续判断条件表达式是否成立-----
...
...
4)执行到表达式不成立 while语句结束
while语句 和 for语句的区别
共同点:都可以实现循环效果
不同点:格式差异
for循环:(初始化语句;条件表达式;控制体语句){
循环体
}
初始化语句;
while(条件表达式){
循环体
控制体语句
}
当明确循环次数的时候优先使用for语句,不明确循环次数的时候使用while循环
从内存角度考虑:for循环结束之后,当前里面的局部变量被释放了,节省内存空间!
while循环,结束之后,虽然扔可以访问到这个变量,但整个main方法结束之后,
才会释放内存,使用过程中,消耗内存空间!
for循环比while更好一些!
死循环
常见的两种死循环
for循环的死循环格式: ----------JDK源码中常见
for(;;){
//当满足某个条件的时候,结束 ----->break;
循环体语句;
}
while循环:死循环格式 ------开发中使用居多
while(true){
//当满足某个条件的时候,结束 ----->break;
循环体语句;
}
for循环的嵌套
for循环语句的嵌套格式:
格式
for(初始化语句;条件表达式;控制体语句){---外层循环
//循环体语句
for(初始化语句;条件表达式;控制体语句){--- 内层循环
循环体语句...
}
}
跳转控制语句
跳转控制语句:
break;
continue;
return;
break:中断,结束不能单独使用,只能在Switch循环语句中使用;单循环for循环中使用
或者在for循环嵌套中使用
continue:继续---->跳过当前循环,立即进入下次循环;也不能单独使用