java的运算符

1.基本运算符

+ 、-、 *、 /、 %

//取余的结果和被模数的符号一样
        int m1 = 12;
        int n1 = 5;
        int m2 = -12;
        int n2 = 5;
        int m3 = 12;
        int n3 = -5;
        int m4 = -12;
        int n4 = 5;
        System.out.println(m1 % n1);//2
        System.out.println(m2 % n2);//-2
        System.out.println(m3 % n3);//2
        System.out.println(m4 % n4);//-2

自增 ++ ,自减--

      //(前)++ 先自增1,在运算
        //(后)++ 先运算,在自增1
        int a1 = 10;
        int b1 = a1++;
        int a2 = 10;
        int b2 = ++a2;
        //  a1 =11   a2 = 11    b1 = 10  b2 =  11
        System.out.println(b1+"-----"+b2);
        short s1 = 12;
        //自增不会改变变量的数据类型
        s1++;//13
        System.out.println(s1)

2.赋值运算符

推荐使用 +=

     int num1 = 12;
        num1 += 1;//num1 = num1 + 1
        int num = 12;
        num %= 5;//num = num % 5
        short sh = 12;
        //sh = sh + 1;编译不通过,short不能转换为int
        sh += 1;//不会改变数据类型
        System.out.println("sh = " + sh);//13

3.比较运算符

        int num3 = 10;
        int num4 = 20;
        System.out.println(num3 == num4);//false
        System.out.println(num3 = num4);//20
        boolean boo1 = true;
        boolean boo2 = false;
        System.out.println(boo1 == boo2);//false
        System.out.println(boo1 = boo2);//true    

4.逻辑运算符

& 与 && 的区别
当符号左边是false时,&会继续执行符号右边的运算。&&不会再执行
| 与 || 的区别
当符号左边是false时,两个都会执行右边的运算
当符号左边是true时,|会继续执行右边的运算,||不在执行
        boolean boo3 = false;
        int i = 10;
        if (boo3 & (i++ > 0)){
            System.out.println("truetrue");
        }else{
            System.out.println("falsefalse");
        }
        System.out.println(i);//11
        boolean boo4 = false;
        int ii = 10;
        if (boo4 && (i++ > 0)){
            System.out.println("truetrue");
        }else{
            System.out.println("falsefalse");
        }
        System.out.println(ii);//10
5.三元运算符
(条件表达式)?表达式1 : 表达式2
如果条件表达式为true,则执行表达式1
如果为false,执行表达式2
三元运算符可以嵌套
使用三元的都可以改为if-else

        //获取两个数的较大值
        int t1 = 12;
        int t2 = 5;
        int max = (t1 > t2) ? t1 : t2;
        //获取三个数的最大值
        int z1 = 12;
        int z2 = 41;
        int z3 = -131;
        int maxz = (z1 > z2) ? ((z1 > z3) ? z1 : z3) : ((z2 > z3) ? z2 : z3);
        int maxz1 = (z1 > z2) ? z1 : z2;
        int maxz2 = (maxz1 > z3) ? maxz1 : z3;
        System.out.println("三个数中最大为" + maxz);
        System.out.println("三个数中最大为" + maxz1);
测试
1.给出一个3位数,取出它的个十百位
     int a = 235;
        int hundred = a / 100;
        int ten = a % 100 / 10;
        int one = a % 10;//直接除以10就行
        System.out.println("百位是:"+hundred+",十位是:"+ten+"个位是:"+one);

2.交换两个数的位置

 int num1 = 10;
        int num2 = 20;
       //方式一:定义中间变量
//        int temp = num1;
//        num1 = num2;
//        num2 = temp;
//        System.out.println("num1 = " + num1 +"\n"+ "num2 = " + num2);
        //方式二:叠加   弊端:1.相加可能超出范围。2.有局限性,只适用于数值类型
//        num1 = num1 + num2;
//        num2 = num1 - num2;
//        num1 = num1 - num2;
        //方式三:使用位运算符    仍然只适用数值类型
        num1 = num1 ^ num2;
        num2 = num1 ^ num2;
        num1 = num1 ^ num2;

 

 

 
 
 
posted @ 2021-03-12 11:26  冷森、  阅读(47)  评论(0)    收藏  举报