JAVA SE 语言基础 运算符

1. 逻辑运算符的基本用法

逻辑运算符有哪些
&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值。
在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6 。
b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
关系表达式:a == b
+=:会自动进行类型转换

代码演示

public class yunsuanfu {
    public static void main(String[] args) {
        int a=6;
        int b=7;
        System.out.println(a>b&&a++>0);
    }
}

运行结果:false
结论:&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。

位运算符

位运算符有哪些
&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意事项:位运算是直接对二进制补码进行运算。
∧位异或:一个数被另外一个数位异或或者两次,该数不变。

示例

对+9,-9进行按位取反运算
+9
原码:0 0001001
反码:0 0001001
补码:0 0001001
按位取反:1 1110110
推回原码:1 0001010
最终结果:-10
-9
原码:1 0001001
反码:1 1110110
补码:1 1110111
按位取反:0 0001000
正数的原反补一样
最终结果:8
<<和>>的用法与结论
左移运算符: 空位补0,被移除的高位丢弃。 例:4<<2 : 00000100 左移两位为00010000,结果是16
右移运算符: 被移位的二进制右移后,最高位是0,空缺位补0;最高位是1,,空位补1。例:-4>>2:10000100 右移两位为10000001,结果是-1
无符号移位:被移位二进制最高位无论是0或者是1,空缺位都用0补。
结论:<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
>> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5

三元运算符的基本用法

三元(三目)运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50; a=50
三元运算符的执行流程
计算关系表达式的值,如果为true, 运算后的结果是表达式1;
如果为false,运算后的结果是表达式2;
示例:获取三个数中的最大值

代码演示

public class demo {
    public static void main(String[] args) {
        int a=30;
        int b=90;
        int c=70;
        int max1= a>b? a:b;
        int max=max1>c? max1:c;
        System.out.println(max);
    }
}

运行结果:90

if,switch的用法示例及区别

public class demo {
    public static void main(String[] args) {
        //三元表达式能写出来的,if一定能写出来,反之不可以:三元运算符是必须要有返回值,而if-else语句并不一定有返回值,其执行结果可能是赋值语句或者打印输出语句,当if else 运算后,有一个具体的的结果时,可以简化写成三元运算符。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数");
        int a = sc.nextInt();
        System.out.println("请输入第二个数");
        int b = sc.nextInt();
        System.out.println("请输入第三个数");
        int c = sc.nextInt();
        int max = 0;
        if (a > b) {
            max = a;
        } else {
            max = b;
        }
        if (max > c) {
            System.out.println("三个数最大值是" + max);
        } else {
            max = c;
            System.out.println("三个数最大值是" + max);
        }
    }
}

运行结果:
在这里插入图片描述switch:输入月份,判断季节

代码演示

public class Mytest {
    public static void main(String[] args) {
        //多重条件选择
        //switch 语句支持数据类型 byte short int char string 枚举
        //case 后的匹配值一定是常量,所有case 后的匹配值使用一种类型,case 后的匹配值不能相同
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入月份");
        int season = sc.nextInt();
        switch (season) {
            case 2:
            case 3:
            case 4:
                System.out.println("春天");
                break;
            case 5:
            case 6:
            case 7:
                System.out.println("夏天");
                break;
            case 8:
            case 9:
            case 10:
                System.out.println("秋天");
                break;
            case 11:
            case 12:
            case 1:
                System.out.println("冬天");
                break;
            default:
                System.out.println("月份出现错误");
                break;
        }
    }
}

在这里插入图片描述
区别:
switch 针对有限个常量进行选择,不能对范围进行选择
if 对范围和常量都可以选择
switch 语句里的break可以省略,但结果可能不是我们想要的,会出现一个现象:case穿透

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值