java入门基础编-4-运算符

算术运算符:+,-,*,/,%  
比较运算符: >,  <,  >=,  <=,  !=, ==
逻辑运算符:&& 短路与,|| 短路或,! 非,& 与,| 或
    短路与非短路与的区别:&& 从左端开始,若第一个为false ,则不去判断第二个
                          而 & 则会判断两边
                          
                        
        public class ArithmeticTest {
            public static void main(String[] args) {
                if(1>2 && (3/0)>3){
                    System.out.println("判断成功!");
                }else{
                    System.out.println("判断失败!");
                }
            }
        }
        输出:判断失败!
        
        public class ArithmeticTest {
            public static void main(String[] args) {
                if(1>2 & (3/0)>3){
                    System.out.println("判断成功!");
                }else{
                    System.out.println("判断失败!");
                }
            }
        }
        输出:Exception in thread "main" java.lang.ArithmeticException: / by zero
            at study.ArithmeticTest.main(ArithmeticTest.java:5)

位运算符:
    public static void main(String[] args) {
            /**
             * 1.按位与 &   都为1则为1
             * 2.按位或 |   同为0则为0
             * 3.按位异或 ^ 不同为1,相同为0
             * 4.按位取反 ~ 1则0,0则1
             */
            byte i = 7 & 8;
            System.out.println(i);
            /**
             * 取补码进行运算
             * 7:
             * 原码:00000111
             * 反码:00000111
             * 补码:00000111
             * 8:
             * 原码:00001000
             * 反码:00001000
             * 补码:00001000
             * 同为1则为1,结果:00000000
             * 结果为 0
             */
            
            
            byte j = -7 & 8;
            System.out.println(j);
            /**
             * 取补码进行运算
             * -7:
             * 原码:10000111
             * 反码:11111000
             * 补码:11111001 (负数反码+1为补码)
             * 8:
             * 原码:00001000
             * 反码:00001000
             * 补码:00001000
             * 同为1则为1,00001000
             * 结果为 8
             */
            
            byte z =  (byte) ~128;
            /**
             *原码:0...010000000(默认整数位int 类型,为32位 4个字节,一个字节占8位)
             *反码:0...010000000
             *补码: 0...010000000
             *取反:1...101111111
             *byte 取8位补码:01111111
             * 补码-1 : 01111111
             * 原码 :01111111
             * 结果为:127
             */
            System.out.println(z);
            
            byte w = 1^-12;
            /**
             * 1的补码:00000001
             * -12:
             * 原码:10001100
             * 反码:11110011
             * 补码:11110100 (负数反码+1为补码)
             * 按位异或:相同为0不同为1
             * 结果:11110101
             * 补码:11110100
             * 反码:10001011
             * 结果为:-11
             */
            System.out.println(w);
            
            
        }

移位运算符:
    << 左移  >> 右移动 >>> 无符号右移
    public static void main(String[] args) {
            /**
             * 1向左移动2位
             *  补码:00000001
             *  移动后补码:00000100
             *  结果:4
             */
            byte b = 1<<2 ;
            System.out.println(b);
            
            /**
             * -1向左移动2位
             *  补码:1...1111111
             *  移动后补码:1...1111100
             *  原码:1...0000100
             *  结果:-4
             */
            int c = -1<<2 ;
            System.out.println(c);
            
            /**
             * -1向右移动2位(>>>无符号右移,符号位也会移动,多出的补0)
             *  补码:1...1111111
             *  移动后补码:001...11111
             *  原码:001...11111
             *  结果:1073741823
             */
            int dd = -1>>>2 ;
            System.out.println(dd);
            
            /**
             * -5向右移动2位(>>右移,符号位不会移动
             * )
             *  补码:1...1111010
             *  移动后补码:1111...11110(右移动空的部分补1)
             *  原码:1..000010
             *  结果:-2
             */
            int cc = -5>>2 ;
            System.out.println(cc);

备注: int 类型的数据在位移时,首先将操作数对32进行取模,得到的结果才是真正的位移数

         long 为64取模


三元运算符:
    格式: 条件?值1:值2
    如果条件为true 取值1,条件为false 取值2

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值