运算符

运算符

  • Java语言支持如下运算符:
    • 算术运算符:+、-、*、/、%、++、–
    • 赋值运算符:=
    • 关系运算符:>、<、>=、<=、==、!= 、instanceof
    • 逻辑运算符:&&、||、!
    • 位运算符:&、|、^、~、>>、<<、>>>
    • 条件运算符:?:
    • 扩展赋值运算符:+=、-=、*=、/=
  1. 算术运算符:+、-、*、/、%

    代码示例:

    // 二元运算符
    int a = 10;
    int b = 20;
    
    System.out.println(a + b);// 30
    System.out.println(a - b);// -10
    System.out.println(a * b);// 200
    
    // int类型的整数相除时,结果只会保留整数部分,如果要保留小数,需要进行类型转换
    System.out.println(a / b);// 0 只会保留整数部分
    System.out.println(a / (double)b);// 0.5
    
    System.out.println(a % b);// 10 取余,模运算
    

    运行结果:

    30
    -10
    200
    0
    0.5
    10
    
  2. 算术运算符:++(自加)、–(自减)

    • 符号在前,则先自增或自减,然后将结果赋值
    • 符号在后,则先进行赋值,然后自增或者自减

    代码示例:

    // ++:自增    --:自减   一元运算符
    // 符号在前,则先自增或自减,然后将结果赋值
    // 符号在后,则先进行赋值,然后自增或者自减
    int i = 3;
    
    int j = i++;// 先将i赋值给j,然后将i+1的结果赋值给i
    System.out.println("i=" + i + ",j=" + j);// i=4,j=3
    
    // 此处以i=4计算
    int k = ++i;// 先将i+1的结果赋值给i,然后将i赋值给k
    System.out.println("i=" + i + ",k=" + k);// i=5,k=3
    
    // 此处以i=5计算
    int l = i--;// 先将i赋值给l,然后将i-1的结果赋值给i
    System.out.println("i=" + i + ",l=" + l);// i=4,l=5
    
    // 此处以i=4计算
    int m = --i;// 先将i-1的结果赋值给i,然后i-1赋值给i
    System.out.println("i=" + i + ",m=" + m);// i=3,j=3
    

    运行结果:

    i=4,j=3
    i=5,k=5
    i=4,l=5
    i=3,m=3
    

注:

  • 不同类型的数据在做算术运算时,会先转成所拥有的最高类型,然后进行计算(short和byte类型在做算术运算时,会转成int型进行计算)

代码示例:

long c = 121212121212L;
int d = 1212;
short e = 10;
byte f = 8;

System.out.println(c+d+e+f);// 121212122442 long
System.out.println(d+e+f);// 1230 int
System.out.println(e+f);// 18 int
System.out.println(f+f);// 16 int

拓展:字符串连接(+)

  • 当运算中出现 “+字符串(String)” 时,则该运算将最终会转换为字符串类型进行拼接

代码示例:

int a = 10;
int b = 20;

// 当运算中出现"+字符串"时,字符串之前的变量正常计算,然后与字符串拼接,字符串之后的变量,则直接转换为字符串进行拼接
System.out.println("" + a + b);// 1020 

// 字符串前的变量正常计算,计算结果与字符串进行拼接
System.out.println(a + b + "");// 30
  1. 关系运算符:

    • 关系运算符返回的结果是一个布尔值(true:正确,false:错误)
    // 关系运算符返回的结果是一个布尔值(true:正确,false:错误)
    int g = 1;
    int h = 2;
    
    System.out.println(a > b);// false
    System.out.println(a < b);// true
    System.out.println(a == b);// false
    System.out.println(a != b);// true
    
  • 拓展:很多运算需要使用一些工具类,例如幂运算

    代码示例:

    // 幂:Java中没有2^3(2*2*2)的写法,需要使用Math类
    double pow = Math.pow(3, 2);
    
    System.out.println(pow);// 9.0
    
  1. 逻辑运算符

    • &&:与(and)
    • ||:或(or)
    • !:非(取反)

    代码示例:

    // &&:与(and)    ||:或(or)    !:非(取反)
    boolean a = true;
    boolean b = false;
    
    // 逻辑与(&&)运算:两个变量都为真,结果为真
    System.out.println("b && a:" + (b && a));// false
    
    // 逻辑或(||)运算:两个变量有一个为真,则结果为真
    System.out.println("a || b:" + (a || b));// true
    
    // 逻辑非(!)运算:如果是真,则结果为假,如果是假,则结果为真
    System.out.println("!(a && b):" + !(a && b));// true
    
  • 短路运算

    • 当第一个条件判断结束时,若已经能获得最终的判断结果,则不会继续做下一步判断,而是直接返回结果

      代码示例:

      // 短路运算:
      int c = 5;
      
      // (c < 4)判断结果为false,已能够确定返回结果为false。所以将不再对(c++ < 4)进行判断
      boolean d = (c < 4) && (c++ < 4);
      
      System.out.println(d);// false
      System.out.println(c);// 5  证明(c++ < 4)并没有被执行,如果执行c的值应该为5
      
  1. 位运算:&、|、^、~

    代码示例:

    /*
    * 二进制数:
    * 0:0000 0000
    * 1:0000 0001
    * 2:0000 0010
    * 3:0000 0011
    * 4:0000 0100
    * 8:0000 1000
    * 16:0001 0000
    * ……
    *
    * A = 0011 1100
    * B = 0000 1101
    *
    * A&B = 0000 1100   同时为1则为1,否则为0
    * A|B = 0011 1101   有一个1则为1,全0为0
    * A^B = 0011 0001   相同为0,相反为1
    * ~B = 1111 0010    取反
    *
    * 问题:2 * 8 怎么计算最快?  2*2*2*2
    * 参考二进制的2 4 8 16
    * << 左移 相当于*2
    * >> 右移 相当于/2
    */
    
    // 具体代码
    System.out.println(2 << 3);// 16
    
  2. 三元运算符:x ? y : z 如果x为true,则结果为y,否则结果为z

    代码示例:

    // x ? y : z
    // 如果x为true,则结果为y,否则结果为z
    int score = 50;
    String str = score < 60 ? "不及格" : "及格";
    
    System.out.println(str);// 不及格
    
  3. 扩展赋值运算符:

    代码示例:

    a += b;// a = a + b;
    a -= b;// a = a - b;
    a *= b;// a = a * b;
    a /= b;// a = a / b;
    
  • java运算符的优先级

    • 级别高的运算符先执行运算,级别低的运算符后执行运算
    • 下表中数字越小优先级越高,()优先级最高,如果出现多个(),则按照从左到右的顺序执行
    优先级运算符结合性
    1()、[]、%从左到右
    2!、+(正)、-(负)、~、++、–从右到左
    3*、/从左到右
    4+(加)、-(减)从左到右
    5<<、>>、>>>从左到右
    6<、<=、>、>=从左到右
    7==、!=从左到右
    8&从左到右
    9^从左到右
    10|从左到右
    11&&从左到右
    12||从左到右
    13?:从右到左
    14=、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、>>>=从右到左
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值