52_Java_运算符

举报
alexsully 发表于 2021/05/26 20:19:04 2021/05/26
【摘要】  算术运算符  赋值运算符 比较运算符(关系运算符)  逻辑运算符  位运算符   三元运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
 算术运算符  赋值运算符 比较运算符(关系运算符)
 逻辑运算符  位运算符   三元运算符

算术运算符

// (前)++ 先自增1, 后
// (后)++ 先运算, 后自增1
        int  a1 = 10;
        int a2 = a1++;   //10
        int  b1 = 10;
        int b2 = ++b1;  // 11
        short s1 =10;
//        s1 = s1 +1 ; // 直接编译不过,s1 +1 返回一个整形

赋值运算符  = 
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制处理。 
支持连续赋值。扩展赋值运算符: +=, -=, *=, /=, %=

          int i2,j2;
        //连续赋值
        i2 = j2 = 10;

比较运算符

逻辑运算符

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写 成x>3 & x<6 
“&”和“&&”的区别: 
   单&时,左边无论真假,右边都进行运算; 
   双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false
a^b  a b 相同时候是false, 不同时候是true

// 短路&&  短路||
        boolean bb1 = false;
        int num1 =10;
        if (bb1 & num1++ > 0){
            System.out.println(num1);
        }else
            System.out.println(num1); //11

        boolean cc1 = false;
        int num2 =10;
        if (cc1 && num2++ > 0){
            System.out.println(num2);
        }else
            System.out.println(num2); // 10  num2 被短路 没有运算
    }


位运算符

运算符  运算 细节 范例 
<<  左移  << 空位补0,被移除的高位丢弃,空缺位补0 3 << 2 = 12 --> 3*2*2=12 
>>  右移   >> 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1 3 >> 1 = 1  --> 3/2=1
>>>   无符号右移  >>> 被移位二进制最高位无论是0或者是1,空缺位都用0补 3 >>> 1 = 1 --> 3/2=1
  &  与运算  & 二进制位进行&运算,只有1&1时结果是1,否则是0 6 & 3 = 2 
  |   或运算  | 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1 6 | 3 = 7 
  ^   异或运算

相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1

 6 ^ 3 = 5
   ~  取反运算  正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反
~6 = -7



三元运算符

/*
运算符之六:三元运算符
1.结构:(条件表达式)? 表达式1 : 表达式2
2. 说明
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
  如果表达式为true,则执行表达式1。
  如果表达式为false,则执行表达式2。
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符可以嵌套使用

3.凡是可以使用三元运算符的地方,都可以改写为if-else 反之,不成立。
4. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。
*/
public class sanyuan {
    public static void main(String[] args) {
        //获取两个整数的较大值
        int m = 12;
        int n = 5;
        int max = (m > n)? m : n;

        // 三个数最大值
        int n1 = 12;
        int n2 = 30;
        int n3 = -43;
        int max1 = (n1 > n2)? n1 : n2;
        int max2 = (max1 > n3)? max1 : n3;
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。