Java运算符的使用和规则

本篇文章为本人学习笔记,如有错误,希望指正。

Java中运算符大致分为以下几类:

  • 算数运算符
  • 赋值运算符
  • 自增自减运算符
  • 关系运算符
  • 逻辑运算符
  • 三元运算符

1. 算数运算符

算数运算符包括:作用
+加法运算,字符串连接运算
-减法运算
*乘法运算
/除法运算
%取模运算,两个数字相除取余数
  • 注意:/%的区别:两个数据做除法,/取结果的%取结果的余数

    整数操作只能得到整数,要想得到小数,必须有浮点数参与运算

1.1 字符串的 + 操作
  • 当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。

    System.out.println("Aunero" + 123);
    //输出结果为Aunero123
    
  • 在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。

    System.out.println(1 + 99 + "Aunero");
    //前两个都是整型常量,会先相加,相加后再和字符串结合,输出结果为100Aunero
    
  • 在没有字符串参与时,会直接相加

    System.out.println(1 + 'a');
    //此时单个字符a会取到ASCII码值,输出结果为98
    

2. 赋值运算符

符号作用说明
=赋值a=10,将10赋值给变量a
+=加后赋值a+=b,将a+b的值给a
-=减后赋值a-=b,将a-b的值给a
*=乘后赋值a*=b,将a×b的值给a
/=除后赋值a/=b,将a÷b的商给a
%=取余后赋值a%=b,将a÷b的余数给a

2.1 底层细节-强转

short s = 1;
s += 1; // 相当于 s = (short)(s + 1);
//我们知道,s = s + 1 在此处是会报错的,因为s为short型,整型常量默认int型,这时候必须强转才能保证s的类型不变。

System.out.println(s);//没有报错,结果是2
//建议:写+=的时候,数据不要超出变量的取值范围,否则数字会错误。

这里其实就是隐式转换的知识,详细可以参照:https://www.jianshu.com/p/a1c0a8a0a054(四-1)
后面几个运算符以此类推。

3. 自增自减运算符

符号作用说明
++自增变量的值加1
自减变量的值减1
  • ++和-- 既可以放在变量的后边,也可以放在变量的前边
3.1 单独使用
  • 单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
3.2 参数操作的使用
  • 如果放在变量的后边,先将该变量原本的值,取出来参与操作,随后再进行自增(++),自减(–)。
int a = 10;
int b = a++;

// a = 11 
// b = 10
  • 如果放在变量的前边,先对该变量做自增(++)或者自减(–),然后再拿变量参与操作。
int a = 10;
int b = ++a;

// a = 11;
// b = 11;

这里的计算逻辑和C语言一样。

  • 分享一道比较容易混淆面试题
int x = 10;
int y = x++ + x++ + x++;
System.out.println(x);    //输出结果为13
System.out.println(y);    //输出结果为33

分析:
这里给y赋值时,x经历了两次自增,即:y = 10 + 11 + 12,y的结果为33。
第三次自增在赋值结束后进行,即:x = 12 + 1。
所以结果为13, 33。

4. 关系运算符 (比较运算符)

符号说明
==a==b,判断a和b的值是否相等,成立为true,不成立为false
!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false
>a>b,判断a是否大于b,成立为true,不成立为false
>=a>=b,判断a是否大于等于b,成立为true,不成立为false
<a<b,判断a是否小于b,成立为true,不成立为false
<=a<=b,判断a是否小于等于b,成立为true,不成立为false
  • 总结:比较运算符无论简单还是复杂,结果都是 boolean 类型的 true 、false;

5. 逻辑运算符

符号作用说明
&逻辑与a&b,a和b都是true,结果为true,否则为false
|逻辑或a|b,a和b都是false,结果为false,否则为true
^逻辑异或a^b,a和b结果不同为true,相同为false
!逻辑非!a,结果和a的结果正好相反
&&短路与作用和&相同,但是有短路效果
||短路或作用和|相同,但是有短路效果
  • 短路效果
    • 逻辑与**&**,无论左边真假,右边都要执行。

    • 短路与**&&,如果左边为真,右边执行;如果左边为假,右边不执行**。

    • 逻辑或**|**,无论左边真假,右边都要执行。

    • 短路或**||,如果左边为假,右边执行;如果左边为真,右边不执行**

做个简单总结:
&&|| 比较 “懒” ,只要左边能直接判断出逻辑结果,右边则直接不运算。

  • 注意
    ! && || 这三个逻辑运算符比较常用
    优先级从高到低依次为非、与、或

6. 三元运算符

  • 三元运算符语法格式:

    比较表达式 ? 表达式1 : 表达式2;
    
  • 计算规则:

    首先计算比较表达式的值

    如果值为true表达式1的值就是运算结果

    如果值为false表达式2的值就是运算结果


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值