java中的运算符也就是基础的算法运算符+、-、*、/分别表示加、减、乘、除。虽然运算符很常见,但是其延伸出很多的用法,值得我们去好好研究下。
基本的运算大家都应该会,但是需要注意的是整数的运算有些特别,因为是整数,所以运算后的结果也要是整数。例如:15/2等于7、15%2等于1 ,这些例子就是这个道理了。
其实在java中需要注意的运算主要有如下:
1.自增运算符与自减运算符。
java借鉴了c和C++中的实现方式,也使用了自增、自减运算符。如:i++将变量i的当前值加1;i--将i的值减1.注意由于i的值是可以变动的,所以i不能是数值。
其实这两种运算符有两种形式。有后缀和前缀之分。如:后缀i++和前缀++i。其中i++的意思是如果有运算,那么就先运算后i再加1,而++i则相反,先对i加1后再进行运算。示例如下:
int i = 6;
int a = ++i+2;
int b = 2+i++;
结果:a:9;b:8;
自减与自加的规则相同,只是变为了减1。
2.关系运算符与boolean运算符
java中的比较常用的关系运算符主要有 ==、<、>、 <= 、>=。
逻辑运算符主要有&、&&、|、||、!。分别表示与、短路与、或、短路或和非。
其中与和短路与都是表示两边的表达式都为true时才为true。但是使用&&时还拥有第一个表达式值为false的时候,结果不为真,不进行第二个表达式验证,这样可以避免一些错误的发生。如:
(1)String test = null;
if(test!=null&&test.length>1)
test = "我是中国人";
(2)String test = null;
if(test!=null&test.length()>1)
test = "我是中国人";
结果:第一个不会报错,第一个就会报出NullPointerException异常。另外,java还支持三元运算操作?:。很多时候,这个 表达式还是很有用的。
condition?expression1:expression2;
示例:
int x = true?1:6;
结果:x = 1;
但是三目运算符有一个比较难以理解的知识点就是当expression1和expression2都为数字类型时的转型问题。因为两个表达式最后要转化为同一类型。我总结了几个规则:
(1.当两个表达式有一个为int类型的常量,另一个为变量,如果该常量可以用变量表示就转化为该变量的类型。否则就都使用该int的类型。
(2.如果两个都是变量,那么就是低位转高位了如:byte转化为int。
3.位运算
在处理整型数值时,可以直接对组成整型的数值的各个位进行操作。
位运算包括:
&("与")、|("或")、^("异或")、~("非")
& 两个操作数的位中,相同则结果为1,不同则结果为0。
| 两个操作数的位中,只要有一个为1就为1,否则为0。
^ 两个操作数的位中,相同则结果为0,不同则结果为1。
~ 就是对一个数的各个位上的值取反,该位如果是0就变为1,如果为1就变为0;
然后就是位移运算符<<,>>,<<<。
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐