Java学习笔记03-运算符

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

了解常用的运算符的规则,知道啥意思就行了。
主要是其他博主的参考资料。


一、赋值运算符

赋值运算符号:=,把右边的值赋给左边的变量

int a = 100;
int b =  c= d = 200; //实际开发不建议这样使用赋值运算符

注意 = 与逻辑运算符 == 的区别, == 只能返回boolean类型的值

二、算数运算符

符号:+、-、*、/、%
特别注意,/ 和 % 的除数不能是 0 ,否则会报错。
int f = 10 / 0;//error
int g = 8 % 0;//error

int a = 5 + 6;//11
int b = 10 - 5;//5
int c = 3 * 6;//18
int d = 10 / 2;//5
int e = 9 % 3;//0  模运算是做除法取余数

+号还可以进行字符串的拼接。

System.out.println("java" + "hello"); // javahello

三、自增自减运算符(要掌握)

自增自减运算符只能针对 变量 使用
符号:++、- - (中间没有空格的)
++:变量自增 1
– :变量自减 1
前置++、–:变量自身先+/-1,再参与运算
后置++、–:变量先参与运算,然后自身再+/-1
1、单独使用,++和–在前在后都一样
2、参与运算,包括=赋值运算,也是参与了运算。

		// ++a;没有变量接收a(没参与=赋值运算),++a也没参与其他运算
		int a = 10;
        ++a; // 相当于 a = 1+a = 1+ 10=11
        System.out.println(a);
        a--; // 相当于 a= a - 1 = 11 - 1 =10
        System.out.println(a);
        //参与运算
        int a = 10;  
        int b = 20;  
        int c = a++  +  a +  ++b   + b;
        //int c= 10+ 11 + 21 +21;

注意同一个变量名,下一次的参与运算使用,用的是谁哦
在这里插入图片描述

四、关系运算符(要掌握)

使用关系运算符可以判断两个操作数之间的关系,结果只能是boolean类型,即 true 或 false
符号:
1、==:是否相等(注意与赋值运算=符号的区别)

boolean a = (5 == 5); //等同于 a = true;

2、<
3、>
4、<=
5、>=
6、!= (英文的感叹号)

boolean flag = (4 != 5); //结果  flag = true;

五、逻辑运算符(要掌握)

逻辑运算符是对true和false两个逻辑值进行的运算
1、主要是注意 && 和 &、|| 和 | 的区别:
&&:短路与,有false则false
||:短路或,有true就true

单个 &,左边无论真假都会执行右边的运算
双个 &&,左边只要一为false,右边绝不执行。

 		int a = 10;
        int b = 5;
        boolean c1 = (a = a - 5) > b & (b = b + 1) > 10 ;
		// & 左边(a = a - 5) > b 结果是false,但是还是执行了右边,
		//因为输出的b的值改变了
        System.out.println(a);
        System.out.println(b);
        System.out.println(c1);

在这里插入图片描述
还是上面这个例子

		int a = 10;
        int b = 5;
        boolean c1 = (a = a - 5) > b && (b = b + 1) > 10 ;
		//&& 左边为false,右边不执行,b还是5
        System.out.println(a);
        System.out.println(b);
        System.out.println(c1);

在这里插入图片描述
|| 和 | 的运算原理同上

2、! (逻辑非)运算
取反操作

boolean a = true;
System.out.println(!a);//false

六、逻辑运算符(简单了解)

位运算操作的是整型,直接对二进制的01数位进行位移操作,效率很快,但是需要了解整型在系统底层的二进制表现形式(进制转换、原码,反码,补码)
参考链接:
Java中的位运算
Java中的位运算
&:相同为1,不同为0
| : 有1为1,没1为0
~ :取反,1变0,0变1
异或:^ ,不同为1,相同为0
左位移 << : 移动几位,就执行 * 2几次
右位移 >> : 移动几位,就执行 / 2 几次
无符号右位移 >>>:
参考资料啦
【后补】
面试题案例
不设置第三方变量,如何实现两个数的值的交换?
【一个数A被另一个数B异或2次,A这个数不变】

在这里插入图片描述

七、复合赋值运算符

把赋值运算符和其他运算符合成一个符号来使用,实现两种运算效果
常用的几个:
1、+=
2、-+
3、*=
4、/=
5、%=
(注意 += 中间没有空格,除数不能为0)
举例:a += 5; //等价于 a = a + 5;

		int a = 1;
        a += 5;  //等价于 a = a + 5;
        System.out.println(a);
        a -= 10;
        System.out.println(a);
        a *= -5;
        System.out.println(a);
        a %= 6;
        System.out.println(a);

在这里插入图片描述
特别注意:
像 += 、-= 这种复合赋值运算符,当两边的数据类型不一样时,系统会自动强制把右边的结果强转成左边的数据类型,最终结果可能造成精度丢失。

byte a = 127;
byte b = 1;
int c = 10;
//a = a + b;//编译报错,数据类型不兼容
a = (byte) (a + b);//编译通过,可以运行,但是精度可能会丢失
System.out.println(a);//-128
b += 128; 
// b=b+128  b是byte类型,128是int类型,不用强转也能执行运算=129,  
// b = 129超过了byte的最大取值范围,造成的最终结果是b的精度丢失
System.out.println(b);// b = -127 

其他复合赋值运算符等到需要用的时候再了解,暂时不记录了。

八、三元运算符

三元运算符格式:
条件表达式 ? 表达式1 : 表达式2 ;
运算规则:首先判断条件表达式的值,若为true,就执行表达式1,若为false就执行表达式2。
判断两个数大小的时候很实用。
举例:

boolean a = (20 > 10) ? true : false; //true
System.out.println(a); //
int b = 100;
int c = 50; 
int max = (b > c) ? b : c; // max = 100,首先判断 b > a 为true,执行 b,得到max=b=100;
System.out.println(max);

在这里插入图片描述

九、运算符优先级

从上到下,优先级从高到低:
( ) 的优先级最高
正负数符号+、-,
++、–
*、/、%
+、-
其他运算符。。。
= 赋值运算符优先级最低


总结

1、运算符主要记住优先级,可以加()提升运算优先级。
2、/ 和 % 运算的除数不能为0。
3、当复合赋值运算符两边的数据类型不一致时,隐含了强制数据类型的转换,不用手动强制转换编译也不报错,但是运算结果可能造成精度丢失。(例如 int a=0; a += 15.66; // a = 15)
4、三元运算的格式【判断表达式 1? 表达式2 : 表达式3 ; 】,运算逻辑,先判断表达式1的结果,是true就执行表达式2,是false就执行表达式3.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值