前言
情况说明:本人目前技术栈是Java这一套,所以这里提及的运算符测试都是在Java语言中的,不能保证在其他语言中也适用
作为一个程序员,你一定遇到过写的代码在你的逻辑里面没有问题,但是一运行就error满天飞。下面来看一个踩坑场景,求取 n 与 2倍m 的和:
/**
* 求取 n 与 2倍m 的和
* @param n
* @param m
* @return
*/
public int sum(int n,int m){
return n + m << 1;// 错误
//return n + (m << 1);// 正确
}
如果问题出现在基本的运算符优先级上,那很难找到问题的所在。并且,对于运算符的优先级掌握到位可以间接的节省代码的复杂度。
一、运算符分类
运算符可用于表示数据的运算
、赋值
和比较
等。Java运算符分为:
- 算术运算:
+,-,*,/,%,++,--
- 赋值运算:
=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=
- 位运算符:
&,|,~,^,<<,>>,>>>
- 比较运算符:
>,>=,<,<=,==
- 逻辑运算符:
&&,&,||,|,!,^
- 三目运算符:
? :
二、运算符的说明
针对于三个操作数的叫做三目运算符(如?:),针对于两个操作数的叫做二目运算符(如 +),针对于一个操作数的叫做单目运算符(如++)。
1.算术运算
+
:加法运算符
把运算符左右的两个数值加起来,也可作为字符串的连接运算符:
//1.数值相加
System.out.println(1+2);//put 3
//2.字符串拼接
System.out.println("a"+"b");//put ab