5.赋值运算符
基本赋值运算符:就是“=”
Int=10;//把右边的10赋值给左边的变量a;
扩展赋值运算符:
符号 作用 说明 |
+= 加后赋值 a+=b等价于a = (a的数据类型)(a+b);将a +b的值给a |
-= 减后赋值 a-=b等价于a = (a的数据类型)(a-b);将a - b的值给a |
*= 乘后赋值 a*=b 等价于a =(a的数据类型)(a*b);将a* b的值给a |
/= 除后赋值 a/=b 等价于a = (a的数据类型)(a/b);将a / b的商给a |
%= 取余后赋值 a%=b 等价于a = (a的数据类型)(a%b);将a % b的商给a |
注意:扩展的赋值运算符隐含了强制类型转换
6.关系运算符
是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。
符号 说明 |
== a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> a>b,判断a是否大于b,成立为true,不成立为false |
>= a>=b,判断a是否大于等于b,成立为true,不成立为false |
< a<b,判断a是否小于b,成立为true,不成立为false |
<= a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意:==是等于 =是赋值
7.逻辑运算符
可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。
符号 介绍 说明 |
& 逻辑与 必须都是true,结果才是true;只要有一个false,结果一定是false |
| 逻辑或 只要有一个为true、结果就是true |
! 逻辑非 你真我假、你假我真。!true=false 、!false= true |
^ 逻辑异或 如果两个条件都是false或者都是true则结果是false。两个条件不同结果是true。 |
例子
double size=9.8;
double storage=16;
//尺寸大于等于6.95 内存大于8GB
//& 前后都为true 结果为true
System.out.println(size>=6.95&storage>=8);//true
//要么尺寸大于等于6.95 要么内存大于8GB
//只有一个是true 结果一定是true
System.out.println(size>=6.95|storage>=8);//true
System.out.println(!true);//false
System.out.println(!false);//true
//逻辑异或:必须是两个不同的结果才是true
System.out.println(false^true);//true
System.out.println(false^false);//false
System.out.println(true^true);//false
符号 介绍 说明 |
&& 短路与 判断结果与&一样 左边为false 右边不执行 |
|| 短路或 判断结果与|一样 左边为true 右边不执行 |
注意:逻辑与 & 、逻辑或 | :无论左边是false还是true,右边都要执行
8.三元运算符
格式:条件表达式?值1:值2;
执行流程:首先计算关系表达式的值,如果值为true,返回1,如果为false,返回值2
9.三元运算符案例
//需求 求两个整数较大的值
int a=10;
int b=1000;
int max=a>b?a:b;
System.out.println(max);
需求:定义三个整数,找出最大值并打印在控制台。
分析
用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
num1 > num2 ?num1 : num2;
②用三元运算符,让临时最大值,和第三个整数,进行比较,并记录结果。
temp > num3 ? temp : num3;
法一
int i=10;
int j=30;
int k=50;
//1.先找出两个整数较大值
int temp=i>j?i:j;
//2.临时变量与第三个整数对比
int rsmax=temp>k?temp:k;
System.out.println(rsmax);
法二
int i=10;
int j=30;
int k=50;
int rsmax1=i>j?(i>k?i:k):(j>k?j:k);
System.out.println(rsmax1);
10.运算符优先级
在表达式中,哪个运算符先执行后执行是要看优先级别的
优先级 运算符 |
|
11.案例
键盘录入技术三个步骤:
- 导包:告诉程序去jdk的哪个包中找扫描器技术 :import java.util.Scanner;
- 写一行代码代表得到键盘扫描仪器:Scanner sc=new Scanner (system.in)
- 等待用户输入数据:sc.nextint()、sc.next()
注意:system、string在jdk中的Java.lang包下
Lang包不需要我们导包,是默认的包
package com.scanner;
import java.util.Scanner;
//1.导包操作(并不需要自己写,可以通过idea导入)
public class scannerdemo {
public static void main(String[] args) {
//目标 学会使用键盘录入技术
//2.得到一个键盘扫描对象
Scanner sc=new Scanner(System.in);
//3.调用sc对象的功能等待接收
//这个代码会等待用户输入数据,知道用户输入完数据并按了回车键就会把数据拿到
System.out.println("请你输入你的年龄是:");
int age=sc.nextInt();
System.out.println("你的年龄是:"+age);
System.out.println("请你输入你的名称是:");
String name=sc.next();
System.out.println("欢迎"+name);
}
}
分支结构
1.If分支
根据判断的结果(真或假)决定执行某个分支的代码
格式1
if(条件表达式)
{ 语句体; }
格式2
if(条件表达式)
{语句体1;}
else { 语句体2;}
格式3
if (条件表达式1)
{语句体1;}
else if(条件表达式2)
{语句体2; }
else if(条件表达式3)
{语句体3;}
else {
语句体n+1;}
2.switch分支
也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。
switch(表达式){
case值1:
执行代码….;
break;
case 值2:
执行代码..;
break;
case值n-1:
执行代码..;
break;
default:
执行代码n;
}
执行流程
-
- 先执行表达式的值,拿着这个值去与case后的值进行匹配。
- 匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
- 如果case后的值都不匹配则执行default代码。
If和switch适合做什么业务场景
- if其实在功能上远远强大于switch。
- if适合做区间匹配。
- switch适合做:值匹配的分支选择、代码优雅。
3.Switch使用注意事项
(1)表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String.不支持double、float、long。
(2)case给出的值不允许重复,且只能是字面量,不能是变量。
(3)不要忘记写break,否则会出现穿透现象。
4.switch的穿透性
如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。
switch(表达式){
case值1:
执行代码1;
case值2:
执行代码2;
case值n-1:
执行代码n-1;
break;
default:
执行代码n;
//break;
}
switch穿透性案例(月份天数查看器)
需求:用户输入月份可以展示该月份的天数。
1、3、5、7、8、10、12月份是31天
2月份是闰年为29天、非闰年为28天。
4、6、9、11月份是30天
//switch
int month=7;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month+"31天!");
break;
case 2:
System.out.println(month+"月闰年为29天、非闰年为28天!");
case 4:
case 6:
case 9:
case 11:
System.out.println(month+"30天!");
break;
default:
System.out.println("数据有误差");
}