Java运算符?

Python013

Java运算符?,第1张

1.运算符

1)算术运算符

+-*/%++--

+:如果有加数为“”(字符串),表示连接

%:2%1 0

++:自增1 num++:先参与运算,然后在自增 ++num:先自增,再参与运算

--:自减1  num-- --num

2)赋值运算符

=   += -= *= /= %=......

num=3;

+=  num+=3=>num=num+3

左边?=右边=>左边=左边?右边

3)关系运算符

==!=><>=<=

表达式结果为:boolean类型

==:用来判断两个数是否相等

4)逻辑运算符

&&||!^&|

结果类型:boolean类型

与:串联,并且

或:并联,或者

非:取反

异或:不同为真,相同为假

与:&& &区别:

&&:短路与,如果第一个能判断出结果,则云南电脑培训http://www.kmbdqn.cn/认为后面的不再判断

&:所有的都会判断

|| |区别:同上面

5)位运算符:

&|~^ <<>> >>>

对数值按位操作:

6&3

00000110

&00000011

00000010

<<:2<<3=>16补0

>>:16>>2=>4:正数补0,负数补1

>>>:补0

三目运算符:

?:

条件表达式?结果1:结果2;

如果表达式结果为true:结果为结果1

否则为结果2

1>2?1:0结果为0

短路与是JAVA语言中的一个逻辑运算符,记作&&,与编程语言中的与逻辑相似,但具有短路性质。

符号为:&&。

A&&B, 当A为false时,不去计算B的值而直接返回false;当A为true时,计算B的值。 所谓短路性质,可以用代码片段解释如下:

int i=5;

boolean j=false&&(i++>5)// 看清这个表达式,想想看执行完这句后i的值应该多少

System.out.println(i)// java中输出变量i的值,i的值为5,所以当第一个值为false并且看到后面的操作符为&&的时候,不再往下计算。

boolean j=false&(i++>5)

System.out.println(i)// 将会发现输出的值为6,所以当第一个值为false并且看到后面的操作符为&的时候,还要往下计算

所以在Java编程中,对于&&和||,Java只看第一个操作数的值,对于&&,如果第一个值为false,那么第二个不再计算,如果第一个值为true,那么还要计算第二个值;对于||,如果第一个值为false,那么还要计算第二个值,如果第一个值为true,那么第二个值不再计算;对于&和|操作符,两边无论如何都计算。

编译运行后,输出结果为5。这就是短路与。短路与执行的顺序是从左到右,在确定第一个表达式值为假之后就没有必要执行第二个条件句的必要了。因为很明显,不管第二个条件的真假,整个式子的布尔值一定为假。短路与会跳掉第二个条件句,不去执行它。基于这些原理,便出现了上述结果。在编程中灵活运用短路与,有很大的意义。

首先名称是不同的:

&&逻辑与||逻辑或它们都是逻辑运算符

& 按位与| 按位或它们都是位运算符

if(a==1&&b==2) 这是说既要满足a=1也要满足b=2

if(a==1||b==2) 这是说或者满足a=1或者要满足b=2

而a&b或者a|b则是二进制的与或运算

&同为1时为1,否则为0

|同为0时为0,否则为1

3&5则

0011

&0101

0001

等于1

3|5则

0011

|0101

0111

等于7

&&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假

||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真

Java中逻辑运算短路的理解:

短路 就是知如果左侧的表达式能确定运算后的结果,则不再计算右侧的表达式。

如(1>2)&&(2<3)   明明左侧已经为假 了   ,我 不用计算右侧我一定知道 此表达是为假,这样 就好似物理中的电流,当某处短路时,电流直接从一条路通过,而不再管另一条路。

看个例子:

public class Logic{

public static void main(String[] args){

int a = 1

int b = 1

if(a<b&&b<a++){

System.out.println(a>b&true)

System.out.println(a)

System.out.println("this's in my control")

else{

System.out.println("that's impossible")

System.out.println(a)

此处由于a<b为假 ,所以 后面的b<a++不会执行

此处的结果为

that's impossible

若假设a的初值为0,此时a<b成立,这时就要计算后面的值了

结果应该为和上面一样。