本帖最后由 小鲁哥哥 于 2020-1-8 22:06 编辑
【济南中心】JAVA编程阶梯:基础篇之第三章
逻辑运算符 逻辑运算符一般用于连接boolean类型的表达式或者值。
表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
比较表达式:a == b(条件表达式)
特点:偶数个不改变本身。
举个栗子:
用来连接boolean模式的表达式
&(与): 3<x<5应写成 x>3 & x>5
两边都是true,结果是true,否则都是false
true & true = true ;
true & false = false;
false & true = false;
false & false = false ;
|(或): x<3 | x>5
两边都是false,结果是false,否则都是true
true | true = true ;
true | false = true;
false | true = true;
false | false = false ;
^(异或):
两边相同为false,两边不同为true。
true ^ true = false ;
true ^ false = true;
false ^ true = true;
false ^ false = false ;
!(非):
true = false;
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
异或( ^ )与或( |)的不同之处是:当左右都为true时,结果为false。
位运算符
<<:就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,右边被移空的部分补0。相当于乘与2的倍数 >>:右移稍微复杂一点,如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1。相当于除以2的倍数 >>>:无论最高位是1还是0,左边被移空的高位都填入0。 看结果:总结相当于乘以或者除以2的多少次幂。 1为真0为假。 &:有0则0,可以用来取二进制中的有效位1。
|:有1位为1,结果为1
^:相同则0,不同则1 ,a^b^b a异或b两次还是a。
~:按位取反 6取反 ~6+1=-6
三元运算符
格式:(关系表达式)?表达式1:表达式2 如:z=(x>y)?x:y
如果条件为true,运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2
和if else 的简写差不多
一定要返回一个变量或者值不能是其他语句。
键盘录入的基本格式
1.导入包: import java.util.Scanner;
2.在main函数中实例化对象: Scanner sc = new Scanner(System.in);
接受用户输入:
2.1) 接收整数:
int num = sc.nexInt();
2.2) 接收字符串:
String str = sc.next();
2.3)接收浮点值:
double val = sc.nextDouble();
在Scanner类中,有一些:hasNextXxxx()方法,这些方法可以先期判断是否能够获取一个Xxxx的值,如果可以,此方法返回true,否则返回false
流程控制语句
流程控制语句分类
顺序结构
选择结构
循环结构
选择结构的分类
if语句
switch语句
if语句有几种格式
格式1
执行流程
先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
选择结构if语句注意事项
a:比较表达式无论简单还是复杂,结果必须是boolean类型
b:if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
格式2
- if(关系表达式){
- 语句体
- }else{
- 语句体
- };
复制代码
执行流程:
首先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体1;
如果是false,就执行语句体2;
注意事项:else后面是没有比较表达式的,只有if后面有。
if语句的格式2和三元的相互转换问题:
当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。而输出语句却不能作为一个返回结果,在其他的时候三元运算符的操作都可以使用if语句改进
格式3
- if(关系表达式){
- 语句体
- }else if(关系表达式) {
- 语句体
- }
- ...
- else{
- 语句体
- };
复制代码
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
如果都是false,就执行语句体n+1。
注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示
选择结构
switch语句格式
- switch(表达式) {
- case 值1:
- 语句体1;
- break;
- case值2:
- 语句体2;
- break;
- …
- default:
- 语句体n+1;
- break;
- }
复制代码
格式解释
1.switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
2.case后面跟的是要和表达式进行比较的值3.语句体部分可以是一条或多条语句
4.break表示中断,结束的意思,可以结束switch语句
5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项
1."表达式"可以产生的值:byte,short,int,char,枚举(JDK5以后),String(JDK7以后)
2.case语句后跟"常量表达式",不能是"变量";而且不能出现相同的常量值;
3.break;语句"不是必须的"。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。
4.多个case之间,没有顺序关系;
5.default语句"不是必须的"。可以不写,它就相当于多重if语句中最后的else。
6.default语句和case语句"没有顺序关系"
选择结构if语句和switch语句的区别
switch建议判断固定值的时候用
if建议判断区间或范围的时候用
|