javase-运算符 分支结构
文章目录
- 运算符 分支结构
- 算术运算符
- 自增自减运算符
- 关系运算符
- 逻辑运算符
- 分支结构
- Scanner 扫描器的使用:
- 输入参数合法性判断:
- switch - case 结构
欢迎来到我的个人博客
运算符 分支结构
算术运算符
+ - × ÷ ()
先乘除后加减
有括号先处理括号里面的内容
除数不能为0
在代码开发中,算术运算符是这样的:
+ - * / %取余
13 ÷ 3 = 4 …… 1
在运算的过程中,只有被赋值的变量才会修改变量值,其他的都是在提供运算数据
优先级问题:
所有的运算符中,()是最高优先级
简单粗暴加括号
+= -= *= /= %=
例如:
num1 = num1 + num2;
num1 += num2;
自增自减运算符
【要求】自增自减运算符是提供给【变量】使用的
++: 自增操作,操作的变量 += 1
优先级:
在变量之后,首先执行该行语句,再来执行自增
在变量之前,首先执行自增,再去执行改行语句
--: 自减操作,操作的变量 -= 1
在变量之后,首先执行该行语句,再来执行自减
在变量之前,首先执行自减,再去执行改行语句
Swift 已经不支持自增自减。为了避免没有必要的歧义性
【个人建议】
在使用自增自减运算符,单独成行,避免没有必要的歧义
面试题:
int num = 5;
++(num++) ???
都不对!!! 语法错误!!!
解释:
按照语法规范。首先执行小括号里面的num++。得到结果是num的值为6
但是这里有小括号包含,所有整个小括号对外展示的效果是一个常量 6
而自增自减运算符是【不能操作常量】。所以语法错误!!!
关系运算符
> < ≥ ≤ = ≠
数学中的关系运算符
开发中的关系运算符
> < >= <= == !=
关系运算符得到的结果是判断运算符两边的表达式结果是否符合运算符的要求
得到的结果是boolean true false
5 > 4 true
5 < 4 false
逻辑运算符
与: 金库 需要两个人同时在场,同时带着钥匙,才可以打开,缺一不可
&& 同真为真,有假即假
或: 自己家门 不管谁带有钥匙都可以开门,但是如果都没带,就GG了
|| 有真即真,同假为假
非: 取反
! 真变假来,假变真
【断路原则】
面试题:
1. int num = 5;
boolean ret = num > 4 && num++ > 5
ret ? num ?
解释:
ret = false; num = 6;
num++ > 5 首先会执行判断然num和5比较,然后再来做自增
num > 5 结果为false
所以整个表达式为false
2. int num = 5;
boolean ret = num > 5 && num++ > 4;
ret ? num ?
解释:
ret = false; num = 5;
在逻辑与运算符的左侧,已经确定当前整个逻辑与的表达式值为false
在右侧的num++ > 4 就是无意义的,计算机不会在执行num++ > 4的
判断。没有执行,所有num的值就不会改变。
3. int num = 5;
boolean ret = num > 5 || num++ > 5;
ret ? num?
ret = false; num = 6;
4. int num = 5;
boolean ret = num > 3 || ++num > 3;
ret ? num ?
ret = true; num = 5;
【拓展】
在计算机中,默认的真假关系,从原理上来说,是 1(真) 和 0(假)
在计算机中,非 0 即 真
true 0000 0001
false 0000 0000
一下内容不适用Java,但是适用于 C/C++ OC PHP
面试题:
请用最直观的表示式,描述以下语句的含义
前提:n是一个int类型的变量
!n的含义
n = 1; !n => false
n = 2; !n => false
n = 0; !n => true;
!n是用来判断当前变量n的值是否为0。用其他表达式展示
n == 0
分支结构
代码中的结构:
顺序结构,分支结构,循环结构
if (/*判断语句 true/false*/) {
//语句体 如果为true执行
}
/* 运行流程: 当程序运行到if语句时,首先判断if之后小括号里面的表达式是否为true,如果为true 执行语句体。如果为false,直接运行到大括号之外 */
if (/*判断语句 true/false*/) {
//true 语句体
} else {
//false 语句体
}
/* 执行流程: 当程序运行到if - else 语句时,首先判断if之后小括号里面的表达式是否为true,如果 为true ,执行true 语句体,如果为false ,执行false 语句体。 代码中最遥远的距离是我在if里,你在else里 */
if (/*条件1*/) {
//语句体1
} else if (/*条件2*/) {
//语句体2
} else if (/*条件3*/) {
//语句体3
} else {
//其他处理情况
}
/* 运行流程: 当程序运行到if - else if结构时,会匹配if之后的条件。找到匹配的条件之后,执行 对应的语句体,如果没有匹配的条件。执行else里面的处理方式 学生成绩: 90分以上 优 80分以上 良 70分以上 中 60分以上 及格 60分以下 叫你爹过来~~ */
Scanner 扫描器的使用:
从键盘上获取用户输入的数据。仅供目前使用,之后的JavaWEB开发,是从前端发送数据到后台
1. 导包 给当前程序提供技能点
在class 上面写上
import java.util.Scanner;
2. 创建Scanner扫描器"变量"
Scanner sc = new Scanner(System.in);
3. 使用Scanner里面的nextInt()方法,从键盘上获取用户输入的int类型数据
int num = sc.nextInt();
举一反三: nextFloat() nextLine();
输入参数合法性判断:
程序的运行只会考虑Java的语法规则,而不会考虑生活逻辑。代码是提供给用户使用的。
那么我们的就要在符合Java语法规则的情况下,去满足实际的生活需求。
例如:学生的成绩不会高于100分,低于0分。
这里可以在用户输入数据之后,对用户输入的数据进行判断,这里使用if分支结构,对
用户输入的数据进行过滤。
这种操作称之为参数合法性判断
【可以增强代码的健壮性,稳定性】
让你的开发思维更为严谨
switch - case 结构
switch (变量) {
case 确定值1:
//处理方式1;
break;
case 确定值2:
//处理方式2;
break;
/*………此处省略1W行………*/
default:
//最终的处理方式
break;
}
/* 执行流程: 当程序运行到switch - case结构的时候,直接利用switch之后的变量去匹配 case之后的确定值。找到匹配项,指向对应的处理方式,如果没有任何的一个匹 配。执行default之后的最终处理方式 【注意事项】 1. 在switch - case 结构中,运行的代码只能是case 到 break之间,或者 case 到 大括号之间!!! 2. break可以省略,但是代码是继续执行到遇到break或者大括号结束。 3. 在case之外的点是不能被执行的,编译时会有语法错误,如果在eclipse IDE 工具下,提示的是 unreachable code 4. 在switch - case中不能出现相同的case选项 5. default从语法上是可以省略。不过,要根据实际需求来确定是否要省略default */
还没有评论,来说两句吧...