Java操作符

操作符

操作符

操作符作用例子
=最基础的赋值操作符,=号右边的值,赋给=号左边变量int a = 1; int x = 0;
*=一个变量和另一个数据相乘,并把结果再赋值给这个变量int a = 1; a*=2; //a = a*2;
/=一个变量和另一个数据相除,并把结果再赋值给这个变量int a = 2; a/=2; //a = a/2;
%=一个变量和另一个数据相余,并把结果再赋值给这个变量int a = 5; a%=2; //a = a%2;
+=一个变量和另一个数据相加,并把结果再赋值给这个变量int a = 5; a+=2; //a = a+2;
-=一个变量和另一个数据相减,并把结果再赋值给这个变量int a = 5; a-=2; //a = a-2;
>比较是否大于1>0
>=比较是否大于等于1>=0
<比较是否小于1<2
<=比较是否小于等于1<=2
instanceof判断对象是否属于指定类型stu instanceof Student
  • == 和 !=
public class Demo {
    public static void main(String[] args) {
        System.out.println(1==2);
        System.out.println(1!=2);
        //比较两个变量指向的地址
        Hello hello = new Hello();
        Hello hello2 = new Hello();
        System.out.println(hello==hello2);
        System.out.println(hello!=hello2);
        System.out.println(hello);
        System.out.println(hello2);
        //基本类型只比较值,不管类型
        System.out.println(1==1.0);//true
        System.out.println(97=='a');//true
    }
}
class Hello{

}

在这里插入图片描述

  • */+ -
public class Demo2 {
    public static void main(String[] args) {
        int a =10;
        int b =4;
        System.out.println(a+b);//14
        System.out.println(a-b);//6
        System.out.println(a*b);//40
        System.out.println(a/b);//2
        System.out.println(a%b);//2
        //特殊 + 可以做拼接 比如和字符串使用
        //字符串 + 任何内容 组成新的字符串
        String s = "hello";
        System.out.println(s+new Demo2());
        System.out.println(s+a);//hello10
        System.out.println(s+"我的值是"+a+"!");
        System.out.println(s+5+5);//hello55
        //注意%对负数求余,最终结果取决于第一个数的符号
        System.out.println(10%-4);//2
        System.out.println(-10%4);//-2
    }
}
  • />> << >>> <<<
public class Demo3 {
    public static void main(String[] args) {
        //8
        // 24个0 00001000 正数 原码 反码 补码 都一样
        //00000000 00000000 00000000 00001000
        //右移1 00000000 00000000 00000000 00000100 丢弃最后一个0
        //有符号 正数补0 负数补1
        System.out.println(8>>1);//4
        //00000000 00000000 00000000 00001000
        //左移1 0 00000000 00000000 00000000 00010000 丢弃最前一个0
        System.out.println(8<<1);//16
        //-8
        //10000000 00000000 00000000 00001000 原码
        //11111111 11111111 11111111 11110111 反码
        //11111111 11111111 11111111 11111000 补码
        //11111111 11111111 11111111 11111001 0左移
        //11111111 11111111 11111111 11111000
        //10000000 00000000 00000000 00000100
        System.out.println(-8>>1);//-4
        //10000000 00000000 00000000 00001000 原码
        //11111111 11111111 11111111 11110111 反码
        //11111111 11111111 11111111 11111000 补码
        //1 11111111 11111111 11111111 11110000 右移
        //11111111 11111111 11111111 11101111
        //10000000 00000000 00000000 00010000
        System.out.println(-8<<1);//-16
    }
}
System.out.println(5&9);
        //5 00000000 00000000 00000000 00000101
        //9 00000000 00000000 00000000 00001001
        //5&9 00000000 00000000 00000000 00000001
        //结果为:1
        System.out.println(5|9);
        //5 00000000 00000000 00000000 00000101
        //9 00000000 00000000 00000000 00001001
        //5&9 00000000 00000000 00000000 00001101
        //结果为:13
        System.out.println(5^9);
        //5 00000000 00000000 00000000 00000101
        //9 00000000 00000000 00000000 00001001
        //5&9 00000000 00000000 00000000 00001100
        //结果为:12
        System.out.println(~-5);
        //5 10000000 00000000 00000000 00000101
        //5 11111111 11111111 11111111 11111010 反码
        //5 11111111 11111111 11111111 11111011 补码
        //~ 00000000 00000000 00000000 00000100
        //结果:4
        System.out.println(5<<2);
        //5 00000000 00000000 00000000 00000101
        //5 00000000 00000000 00000000 00010100
        //结果:20
        System.out.println(-5<<2);
        //-5 10000000 0000000 0000000 00000101
        //-5 11111111 1111111 1111111 11111010 反码
        //-5 11111111 1111111 1111111 11111011 补码
        //-5 11111111 1111111 1111111 11101100 左移
        //   11111111 1111111 1111111 11101011 反码
        //   10000000 0000000 0000000 00010100
        //结果:-20
        System.out.println(-5>>2);
        //-5 10000000 0000000 0000000 00000101
        //-5 11111111 1111111 1111111 11111010 反码
        //-5 11111111 1111111 1111111 11111011 补码
        //-5 11111111 1111111 1111111 11111110 右移
        //   11111111 1111111 1111111 11111101 反码
        //   10000000 0000000 0000000 00000010
        //结果:-2
        System.out.println(-5>>>2);
        //-5 10000000 0000000 0000000 00000101
        //-5 11111111 1111111 1111111 11111010 反码
        //-5 11111111 1111111 1111111 11111011 补码
        //-5 00111111 1111111 1111111 11111110 >>>
        //结果:2^30-2
        System.out.println(5>>2);
        //5 00000000 0000000 0000000 00000101
        //5 00000000 0000000 0000000 00000001
        //结果:1
        System.out.println(5>>34);
        //5>>34=5>>2
        //结果:1
        System.out.println(97=='a');
        //==号不考虑数据类型,返回值为true
        System.out.println(5.0==5);
        //==号不考虑数据类型,返回值为true
        System.out.println(4>5 ^ 'c'>'a');
        //相当于flse^true,返回值仍然true
  • &^~|
public class Demo4 {
    public static void main(String[] args) {
        //1
        //00000000 00000000 00000000 00000001
        //0
        //00000000 00000000 00000000 00000000
        System.out.println(1&0);//0
        //同时为一才为1
        //1&1
        //00000000 00000000 00000000 00000001
        //00000000 00000000 00000000 00000001
        System.out.println(1&1);//1
        //1&3
        //00000000 00000000 00000000 00000001
        //00000000 00000000 00000000 00000011
        //00000000 00000000 00000000 00000001 结果
        System.out.println(1&3);

        //1|3
        //有1取1 无则取0
        //00000000 00000000 00000000 00000001
        //00000000 00000000 00000000 00000011
        //00000000 00000000 00000000 00000011 结果
        System.out.println(1|3);//3

        //1^3
        //相同取0 不同取1
        //00000000 00000000 00000000 00000001
        //00000000 00000000 00000000 00000011
        //00000000 00000000 00000000 00000010 结果
        System.out.println(1^3);//2

        //~:取反 1->0,0->1
        //00000000 00000000 00000000 00000001
        //11111111 11111111 11111111 11111110 补码
        //11111111 11111111 11111111 11111101 反码
        //10000000 00000000 00000000 00000010 原码
        System.out.println(~1);
    }
}

使用场景 交换数值

public class Demo5 {
    public static void main(String[] args) {
        int a =10;
        int b =5;
        //方法1 借助中间变量
        int temp;
        temp=a;
        a=b;
        b=temp;
        System.out.println(a);
        System.out.println(b);
        //方法2:不能使用中间变量
        a = a+b;
        b = a-b;
        a = a-b;
        System.out.println(a);
        System.out.println(b);
        //方法三:使用^异或交换
        a =a^b;
        b =a^b;
        a =a^b;
        System.out.println(a);
        System.out.println(b);
    }
}
  • && ||
public class Demo6 {
    public static void main(String[] args) {
        //&&连接两个布尔表达式,拼接多个判断条件
        //同时为true才为true
        int a=1;
        int b=5;
        System.out.println(a>0&&b>0);//true
        System.out.println(a>1&&b>1);//false
        // || 拼接多个判断条件 一个为true就为true
        System.out.println(a>5||b>5);//false
        System.out.println(a>1||b>1);//true
        //&&的短路效果,前面为false后面表达式不计算
        //a=1,b=5
        System.out.println(a++>1&&++b>0);
        System.out.println(a);
        System.out.println(b);//此时b不会自增
        System.out.println(a++>0&&++b>0);
        System.out.println(a);
        System.out.println(b);//此时b会自增
        //||的短路效果,前面为true后面不执行
        System.out.println(a++>0||++b>0);
        System.out.println(a);
        System.out.println(b);//此时b不会自增
    }
}

计算机会把true识别为1 false为0

  • 三目运算符
public class Demo7 {
    public static void main(String[] args) {
        int num =0;
        char gender;
        if (num==0){
            gender = '男';
        }else {
            gender = '女';
        }
        System.out.println(gender);//男
//        System.out.println((num==0)?(gender='男)':(gender='女'));
        char gender2 = num==1?'男':'女';
        System.out.println(gender2);//女
    }
}
优先级运算符结合性
1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值