部分运算符和分支结构

本文详细介绍了Java中的赋值运算符、关系运算符、逻辑运算符、三元运算符及其用法,包括基本赋值和扩展赋值运算,以及条件判断和逻辑组合。此外,还讲解了运算符的优先级规则。接着,展示了如何使用键盘录入技术和分支结构,如If分支和Switch分支,以及在Switch中需要注意的事项和穿透性问题。内容涵盖了程序设计的基础知识,适合初学者学习。
摘要由CSDN通过智能技术生成

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.运算符优先级

在表达式中,哪个运算符先执行后执行是要看优先级别的

优先级                          运算符

  1. 0
  2. ! -  ++  --
  3. *   /   %
  4. +  -
  5. <<  >>  >>>
  6. <  <=  >  >=  instanceof
  7. ==  !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ?:
  14. =  +=  -=  *=  /=  %=  &=

11.案例

键盘录入技术三个步骤:

  1. 导包:告诉程序去jdk的哪个包中找扫描器技术 :import java.util.Scanner;
  2. 写一行代码代表得到键盘扫描仪器:Scanner sc=new Scanner (system.in)
  3. 等待用户输入数据: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适合做什么业务场景

  1. if其实在功能上远远强大于switch。
  2. if适合做区间匹配。
  3. 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("数据有误差");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是秀秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值