var i=35; i=-i;
var i=6; i=4-9;
var i=35; i=-i;
var i=6; i=4-9;
转载于:https://www.cnblogs.com/f6056/p/9437874.html
我们都知道在java语言的使用过程中,必不可少的就是运算符了。那么我们经常使用的运算符都有哪些呢?
运算符基本分为六类:算数运算符、赋值运算符、比较/关系运算符、逻辑运算符、位运算符、三元/三目/条件运算符。
Java是一门强类型的语言,对每种数据类型都严格划分了数据类型。
1、*算数运算符*都包括:加(+)、减(-)、乘(*)、除(/)、取模(%)、自增(++)、自减(–)、字符串连接符(+)。
使用规则:
1. byte/short在运算的时候会自动的提升为int,然后进行运算,运算结果为int。
2. 同一个类型参与运算,结果的类型与参与运算的类型一致。
3. 如果运算过程中有大类型参与了运算,结果一定是大类型
4. 由于绝大部分小数在转化成二进制的时候是无限小数,所以double类型在存储小数的时候也没有办法精确存储,因此也没有办法来精确运算。
5. 整数/0 :ArithmeticException(算数异常)。
任意非0数字/0.0或者是任意小数/0 :Infinity(无穷大)。
0/0.0->NaN-> Not a Number(非数字)NaN和任何值都不相等包括其本身。
判断一个对象是否是NaN只有一个方法isNaN();
例:
大家在生活中熟知的加减除与java中的用法一样
%(取模运算符/取余)
在做取余运算的时候,先按正数进行取余,然后看%左边数字的符号,如果%左边的数字是正数,那么结果就是正数。
3.2 % 2 = 1.2 5.4%1.7=0.3 -3.5%1.7=-0.1
++/–(自增自减运算)
相当于在原来的基础之上自增/自减1。
++ 在变量名之前,表示先自增,自增完成之后才会参与其他运算。
++ 在变量名之后,表示先拿变量的原来的值参与运算,然后再自增。
+(字符串拼接符/连接符)
“a”+”b” —>”ab” 2+3+”a”—>”5a”
可以利用+将两个字符串进行拼接,或者也可以利用+将任何数据与字符串进行拼接。
2、赋值运算符
十二个运算符:=(等于) +=(加等) -=(减等) *=(乘等) /=(除等) %=(取余等) &=(与等) |=(或等) ^=(异或等) <<=(左移等) >>=(右移等) >>>=(无符号右移等)
注意:除了=以外,其余的赋值运算符要求这个变量必须有初始值。
byte/short可以参与赋值运算,运算结果仍是原类型。
3.关系 运算符/比较运算符
关系运算符又叫比较运算符。
七个运算符:==等于、!= 不等于、>(大于) 、<(小于)、>=(大于等于)、<=(小于等于)、instanceof(判断对象于实例的关系)。它们的结果全是boolean型
instanceof
用于判断对象是否是否对应类的实例的。
“abc” instanceof String -> true
运算完成之后结果是一个boolean类型的值。
4.逻辑运算符
六个运算符:&与(And)、|或(Or)、!非(Not)、^异或、&&短路与、||短路或
1.&运算规则:
true&true=true true&false=false false&true=false false&false=false
见false为false。
2.|运算规则:
true|true=true true|false=true false|true=true false|false=false
见true为true。
3.!运算规则:
!true=false !false=true
非否即是,非是即否。
4.^运算规则:
true^true=false true^false=true false^true=true false^false=false
相同则为false,不同则为true。
5.&&运算规则:
对于&&而言,如果前边的表达式的结果为false,则后边的表达式就不再运算。
6.||运算规则:
对于||而言,如果前边的表达式的结果为true,则后边的表达式就不再运算。
注意:短路特性可以提高代码的运算速度。
5.位运算符
7个运算符号:
&(与)、|(或)、 ^(异或)、<<(左移)、>>(右移)、>>>(无符号右移)、~(取反)
注意:位运算针对的是整数,运算的是数据的补码
可以利用&来判断是否是奇偶数。
1.原、反、补码
数据在计算机中是以补码形式来存储的。最高位是一个符号位:如果是正数,最高位为0,如果是负数,最高位为1。对于正数而言,原反补三码一致。负数的反码是在原码的基础上,最高位不变,其余位0变1,1变0,负数的补码是在反码的基础上+1。
6- 00000000 00000000 00000000 00000110—原码/反码/补码
-6 - 10000000 00000000 00000000 00000110—原码
11111111 11111111 11111111 11111001—反码
11111111 11111111 11111111 11111010—补码
11111111 11111111 11111111 11101101—补码
11111111 11111111 11111111 11101100—反码
10000000 00000000 00000000 00010011—原码— -19
2.与或非运算规则
奇数^偶数=奇数
a ^ b ^ b = a; b ^ b ^ a = a
注意:
Java中所有的数值类型的数据都是有符号的。
baty/short参加左移和右移和无符号右移结果为int。
一个数字右移几位就是将这个数字除以2的几次方,然后取整。
取反快捷运算:~i= - i - 1
6.三元运算符
三元运算符又叫三目运算符,还可叫做条件运算符。
1.格式
逻辑值 ? 表达式1 :表达式2;
int i = 4, j = 7;
int k = i > j ? i : j;
System.out.println(k);//结果为j。
2.执行顺序:
如果逻辑值为true的话,执行表达式1,;反之执行表达式2。
①三元表达式在运算完成之后必须有一个结果。
//不允许,运算完成之后,没有结果。
A > b ? System.out.println( a ) : System.out.println( b );
②表达式1和表达式2的结果必须是相同类型或相容。
double d = a > b ? a * 2 : a * 2.5;
③在三元表达式形成嵌套的时候,尽量添加()来提高代码的可读性
int max = a > b ? ( a > c ? a : c ) : ( b > c ? b : c );
首先了解下什么是运算符,都有哪些运算符。实际当中大家常见到的可能是算术运算符和比较运算符,适用于各种运算场景,是不是很常见呢。今天要说的就是算术运算符中的 ++ 和 --,分别有什么作用呢。其实 ++相当于 +( 加法),-- 相当于 - (减法), 在语言版本当中就被叫做自增 和自减运算符。
不管在什么语言中,运算符都有优先级,那么自增和自减运算符处于什么级别呢,它们处于第三级当中,优先级决定了运算的结合方向,从而先运算哪个部分,再运算哪个部分,运算符优先级一览表:
优先级 | 结合方向 | 运算符 | 附加信息 |
---|---|---|---|
1 | 无结合 | clone、new | clone 和 new |
2 | 从右向左 | ** | 算术运算符 |
3 | 从右向左 | ++、--、~、(int)、(float)、(string)、(array)、(object)、(bool)、@ | 类型、递增/递减、错误控制 |
4 | 无结合 | instanceof | 类型 |
5 | 从右向左 | ! | 逻辑运算符 |
6 | 从左向右 | *、/、% | 算术运算符 |
7 | 从左向右 | +、-、. | 算术运算符和字符串运算符 |
8 | 从左向右 | <<、>> | 位运算符 |
9 | 无结合 | <、<=、>、>= | 比较运算符 |
10 | 无结合 | ==、!=、===、!==、<>、<=> | 比较运算符 |
11 | 从左向右 | & | 位运算符和引用 |
12 | 从左向右 | ^ | 位运算符 |
13 | 从左向右 | | | 位运算符 |
14 | 从左向右 | && | 逻辑运算符 |
15 | 从左向右 | || | 逻辑运算符 |
16 | 从右向左 | ?? | null 合并运算符 |
17 | 从左向右 | ? : | 三元运算符 |
18 | 从右向左 | =、+=、-=、*=、**=、/=、.=、%=、&=、|=、^=、<<=、>>= | 赋值运算符 |
19 | 从左向右 | and | 逻辑运算符 |
20 | 从左向右 | xor | 逻辑运算符 |
21 | 从左向右 | or | 逻辑运算符 |
在语言当中运算符分为两种单目运算符和双目运算符,单目运算符又叫一元运算符(需要一个变量进行运算),双目运算符又叫二元运算符(需要两个变量进行运算),通过分析是属于单目运算符。其实还有三元运算符,这里就不多介绍了。
上述表格可以看出是从右向左的,其实在运算当中,自增、自减是可以出现在变量的左边和右边,各表示的意义都有不同。
例1:单个运算符进行运算(1)
<?php $a = 1; $b = 2; echo "a=".++$a.",b=".--$b; //输出 a=2,b=1
为啥是a=2,b=1呢,来看看,自动运算的过程是这样,自增和自减都是出现在变量的左边,首先 取变量$a,$b的值,然后 进行自增 加1,自减减1,最后执行echo输出$a,$b的值。
例2: 单个运算符进行运算(2)
<?php $a = 1; $b = 2; echo "a=".$a++.",b=".$b--; //输出 a=1,b=2
咦,大家肯定很纳闷,为什么$a,$b输出是1,2,而不是2,1呢。其实关键就在于运算符出现的位置,这次是在变量的右边,例1是在变量左边。过程其实也很简单,首先都是先取$a,$b的值,然后将值赋值给输出的$a,$b,执行echo,最后一步才是$a,$b进行自增加1,自减减1。
例3:多个运算符的运算
<?php $a = 1; $b = 2; $c = ++$a + $b--; echo "c=" . $c. ",b=" . $b; //输出 c=4,b=1
对于这个大家相对来说应该会清楚了吧,输出结果为4。首先$a自增加1,然后取$b的值为2,之后执行加法运算值为4,最后将4赋值给 $c 后,$b在减1,如果要输出$b的值,那么为1。
例4:运用于循环(for/while)
<?php for($i=1;$i<5;$i++) { echo 'i='.$i; } //输出 i=1i=2i=3i=4
for循环中大家应该都清楚运算规则,先 $i=1,比较 1<5,成立执行echo语句,输出i=1,输出后,再执行$i++,此时$i=2,再 执行 $i<5,变成2<5 ,成立执行echo语句,再输出$i,依此类推,当 $i=5时,条件不成立,程序终止执行。while的用法就不多介绍,与for相似。
好了,就介绍到这里了,看了后是不是更加了解呢?