JAVA 基础之运算符

JAVA 基础之运算符

算术运算符

算术运算符就是我们所熟知的加、减、乘、除运算符和取余运算符,但它与平时所用的有所不同。

符号作用说明
+操作数均为数值型的数据,+用于数值的计算,若有一端为字符型,+用于拼接字符
-操作数必须为数值型的数据,字符不能参与
*操作数必须为数值型的数据,字符不能参与
/操作数必须为数值型的数据,字符不能参与,两个整数相除,结果保留整数部分。
%取余用于两数相除,取余数,商永远是整数,所以小数也能求余数。

注意:

  • 算术运算符需要两个操作数参与
  • 多个符号参与运算,遵循四则运算规则,先乘除后加减
  • 多种数据类型参与运算时,运算结果以所有参与运算的操作数中所占字节最大的的类型为准
System.out.println(7/3+2*5%3.0);//2+1.0=3.0

关系运算符

关系运算符用来对操作数的关系进行比较

符号作用
>大于
<小于
>=大于等于(=必须在后边)
<=小于等于(=必须在后边)
==等于
!=不等于

注意:

  • 关系运算符需要两个操作数参与

  • =与==的区别

    • =用于赋值
    • ==用于比较两个原始类型的值或引用类型的内存地址
    • 比较原始类型时,可以使用==
    • 比较引用类型时(特别是字符串),不要使用==,==比较的是内存地址,不是值,比较值可以用eqauls()方法
  • 关系运算的结果为boolean,布尔值

逻辑运算符

符号作用说明
&&and与符号两端需要两个逻辑表达式。判断符号两边的式子,如果结果都为true,整体结果为true,如果有一个结果为false,整体结果就为false。
||or或符号两端需要两个逻辑表达式。判断符号两边的式子,如果结果都为false,整体结果为false,如果有一个结果为true,整体结果就为true。
单目运算符:只有一个表达式参数运算。!表达式表示将原表达式的结果取相反

位运算符

符号作用
&按位与。在结果上与&&无区别。但&&是短路运算,有可能不会执行第二个表达式,&两个表达式都会执行。
|按位或。在结果上与||无区别。但||是短路运算,有可能不会执行第二个表达式,|两个表达式都会执行。
^按位异或。将操作数转换为二进制后,按位比较,如果相同结果为0,不同结果为1,最终二进制结果转换为十进制
>>按位右移。将第一个操作数转换为二进制后,向右移动第二个操作数对应的位数,再将结果转换为十进制
<<按位左移。将第一个操作数转换为二进制后,在后边补充第二个操作数对应的0,再将结果转换为十进制
//按位异或:将操作数转换为二进制后,按位比较,如果相同结果为0,不同结果为1,最终二进制结果转换为 十进制 
//3 011 
//5 101 
// 110---6 
System.out.println(3^5);//6 

//按位右移:将第一个操作数转换为二进制后,向右移动第二个操作数对应的位数,再将结果转换为十进制 
//110 >> 11--3 
System.out.println(6>>1);//3 

//按位左移:将第一个操作数转换为二进制后,在后边补充第二个操作数对应的0,再将结果转换为十进制 
//101 << 1010--10 
System.out.println(5<<1);

注意:

  • &&、||和&、|在结果上没有区别,但是&&和||是短路运算,如果能通过第一个式子决定最终的结果,则不用判断第二个式子。&和|则不会短路,会将两个式子都执行。
  • 所以实际应用中,使用&&和||提高代码执行效率

赋值、复合赋值运算符

符号作用
=赋值运算符。将符号右侧的内容赋值给左侧的变量,保证能被保存。
+=复合赋值运算符。a+=3相当于a=a+3;
-=复合赋值运算符。a-=3相当于a=a-3;
*=复合赋值运算符。a*=3相当于a=a*3;
/=复合赋值运算符。a/=3相当于a=a/3;
%=复合赋值运算符。a%=3相当于a=a%3;

注意:

  • 复合赋值运算的流程是:
    • 将符号两侧的操作数进行对应的算术运算后,将结果赋值给符号左侧的变量中。
int a=3; 
a*=3+2;//相当于a=a*(3+2),结果为15

自增、自减运算符

符号作用
++将结果+1
将结果-1

注意

  • 只能有一个操作数参与运算,是单目运算符

  • a++或++a相当于a+=1或a=a+1。–同理

  • 如果++或–独立成行使用,无论符号在前在后,都将结果+1或-1

    int a=3;
    a++;//或++a 
    System.out.println(a);//4
    
  • 如果++或–与其他事情配合使用

    • 符号在前,先+1或-1计算后再使用

    • 符号在后,先使用后再+1或-1计算

    int a=3; 
    if(a++>3){//符号在后,先使用,即3>3不成立。 
        //do something 
    }
    System.out.println(a);//a最终还是会+1,4 
    
    int b=4; 
    if(--b==3){//符号在前,先计算,即3==3成立 
        //do something 
    }
    System.out.println(b);//3
    

条件运算符

表达式一?表达式二:表达式三

注意:

  • 三目运算符,有三个操作数参与。是一个简化版的双分支条件语句。

  • 首先运算表达式一,如果结果为true,执行问号后的表达式二,如果结果为false,执行冒号后的表达式三

  • 整个表达式的最终结果为表达式二或表达式三。

使用条件运算符判断闰年

//输出一个年份是否为闰年:四年一闰,百年不闰,四百年再闰 
//闰年能被4整除且不能被100整除,或能被400整除 
int year = 1900; 
String res = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? "是闰年" : "是平年"; 
System.out.println(year + "年" + res);

运算符之间的优先级

小括号>>单目运算符>>算术运算符>>关系运算符>>逻辑运算符>>赋值运算符

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值