运算符day02

1.算数运算符

class yunsuanfu{
    public static void main(String[] args){
    
    //%取余运算
    //结果的符号与被模数的符号相同
    //开发中,通常使用%来判断能否被除尽的情况
    int n1=12;
    int m1=5;
    System.out.println("n1%m1="+n1%m1);//2

    int n2=-12;
    int m2=5;
    System.out.println("n2%m2="+n2%m2);//-2

    int n3=12;
    int m3=-5;
    System.out.println("n3%m3="+n3%m3);//2

    int n4=-12;
    int m4=-5;
    System.out.println("n4%m4="+n4%m4);//-2
    
    
    
    //(前)++:先自增1,后运算
    //(后)++:先运算,后自增1(自增1不会改变数据类型)
    int a1=10;
    int b1=++a1;
    System.out.println("a1="+a1+",b1="+b1);//a1=11,b1=11

    int a2=10;
    int b2=a2++;
    System.out.println("a2="+a2+",b2="+b2);//a2=11,b2=10
    }
}

2.赋值运算符
*****    +=, -=, *=, /=, %=
class yunsuanfu{
    public static void main(String[] args){
    
    int i1=10;
    int j1=10;//赋值符号:=

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

    int i3=10,j3=30;

    //******************
    int num1=10;
    num1 +=2;  //num1=num1+2
    System.out.println(num1);//12

    int num2=12;
    num2 %=5;
    System.out.println(num2); //2

    short s1=10;
    s1 +=2;
    System.out.println(s1); //12,不会改变变量本身的数据类型
    //s1=s1+2,编译失败

    //开发中,如果希望变量实现+2的操作,有几种方法?
    //方法一:num =num+2
    //方法二:num +=2;(推荐)

    //开发中,如果希望实现变量+1的操作,有几种方法?
    //一:num=num+1
    //二:num +=1
    //三:num++
    }
}


3.比较运算符

class yunsuanfu{
    public static void main(String[] args){
    
    //比较运算符的结果是:布尔型
    //区分==和=

    int i=10;
    int j=20;

    System.out.println(i==j);//false
    System.out.println(i=j);//20

    boolean b1=true;
    boolean b2=false;
    System.out.println(b1==b2);//false
    System.out.println(b1=b2);//flase
    }
}

4.逻辑运算符

class yunsuanfu{
    public static void main(String[] args){
    
    //区分&与&&
    //相同点:&与&&运算结果相同
    //当符号右边为true时,都会执行符号右边的运算
    //不同点:当符号左边是false是,&会继续执行符号右边的运算,&&则不会
    boolean b1=true;
    b1=false;
    int num1=10;
    if(b1 & (num1++>0)){
        System.out.println("我现在在北京");
    }else{
        System.out.println("我现在在南京");
    }
    System.out.println("num1="+num1);     
    //我现在在南京
    //  num1=11

    boolean b2=true;
    b2=false;
    int num2=10;
    if(b2 && (num2++>0)){  //&&前面是true,就全都执行,如果为false,只有前面执行
        System.out.println("我现在在北京");
    }else{
        System.out.println("我现在在南京");
    }
    System.out.println("num2="+num2);
    //我现在在南京
    //  num2=10


    //区分:|与||
    //相同点:|与||运算结果相同
    //相同点:当符号左边为false时,二者都会执行符号右边的运算
    //不同点:当符号左边为true时,|继续执行符号右边的运算,而||则终止
    boolean b3=true;
    int num3=10;
    if(b3 | (num3++>0)){  
        System.out.println("我现在在北京");
    }else{
        System.out.println("我现在在南京");
    }
    System.out.println("num3="+num3);

    boolean b4=true;
    int num4=10;
    if(b4 || (num4++>0)){  
        System.out.println("我现在在北京");
    }else{
        System.out.println("我现在在南京");
    }
    System.out.println("num4="+num4);
    //  我现在在北京
    //    num3=11
    //    我现在在北京
    //    num4=10

    }
}

5位运算符(无<<<)

class BitTest{
    public static void main(String[] args){
    
    //位运算符操作的都是整形数据
    //<<:一定范围内,每向左移一项,相当于*2
    //>>:每向右移一位,相当于/2

    //面试题:最高效的方式计算2*8:2<<3,8<<1

    int i=21;
    System.out.println("i<<2:"+(i<<2));//84
    System.out.println("i<<3:"+(i<<3));//168
    System.out.println("i<<4:"+(i<<4));//336
    System.out.println("i<<26:"+(i<<26));//i<<26:1409286144
    System.out.println("i<<27:"+(i<<27));//i<<27:-1476395008    
    
    int n=12;
    int m=5;
    System.out.println("n&m="+(n&m));//4
    System.out.println("n|m="+(n|m));//13
    System.out.println("n^m="+(n^m));//9
    
    //交换两个变量的值
    int num1=10;
    int num2=20;

    //方法一:定义临时变量
    /*int temp=num1;
    num1=num2;
    num2=temp;
    System.out.println("num1="+num1+",num2="+num2);*/

    //方式二:好处:不用定义临时变量
             // 弊端:相加减可能超出存储范围,有局限性,只能适用于数据类型
    /*num1=num1+num2;
    num2=num1-num2;
    num1=num1-num2;
    System.out.println("num1="+num1+",num2="+num2);*/

    //方式三:位运算符
    num1=num1^num2;
    num2=num1^num2;
    num1=num1^num2;
    System.out.println("num1="+num1+",num2="+num2);
         }
}


6.三元运算符
//三元运算符
    //结构    (条件表达式)?表达式一:表达式二
    //条件表达式的结果为boolean型
    //如果表达式为true,则执行表达式一,否则执行表达式二
    //表达式一与表达式二类型相同(int与float属于同一类型)
    //三元运算符可以嵌套
    //凡是使用三元运算符都可以改写成if-else语句,反之不成立(if -else更普遍使用)
class yunsuanfu{
    public static void main(String[] args){
    
    //获取两个表达式的最大值
    int m=12;
    int n=5;

    int max=(m>n)?m:n;
    System.out.println(max);

    double num=(m>n)?2:1.0;
    System.out.println(num);//2.0
    
    //(m>n)?2:"n大";//编译错误
    n=12;
    String maxstr=(m>n)?"m大":((m==n)?"m与n相等":"n大");
    System.out.println(maxstr);

    //获取三个数的最大值
    int n1=12;
    int n2=30;
    int n3=-34;
    int max1=(n1>n2)?n1:n2;
    int max2=(max1>n3)?max1:n3;
    System.out.println(max2);  //30

    int max3=(((n1>n2)?n1:n2>n3)?((n1>n2)n1:n2):n3;
    System.out.println(max3);//没看懂,可读性差


    //三元运算符可以改写成if-else语句
    if(m>n){
        System.out.println(m);{
    }else{
        System.out.println(n);
    }
}
       }
}

  • 38
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值