Java_13_运算符_二元运算符_取模运算_一元运算符_布尔逻辑表达符_位运算符_扩展运算符_字符串连接符_三目条件运算符_运算符优先级

Java语言支持如下运算符:

算术运算符:+,-,*,/,%,++,--

赋值运算符:=

关系运算符:>,<,>=,<=,==,!=,instanceof

逻辑运算符:&&,||,!

位运算符:&,|,^,~,>>,<<,>>>> 了解即可

条件运算符:?,:

扩展赋值运算符:+=,-=,*=,/=

 

二元运算符

整数运算:

如果两个操作数有一个为long,则结果也为long,没有long时,结果为int。即使操作数全为shot,byte,结果也是int

浮点运算:

如果两个操作数有一个为double,则结果为double。

只有两个操作数都是float,则结果才为float。

 

取模运算

其操作数可以为浮点数,一般使用整数。如:5.9%3.9=2.0000000000000004

要点:

 

负数%负数=负数;System.out.println(-5.9%-3.9); //输出:-2.0000000000000004

负数%正数=负数;System.out.println(-5.9%3.9); //输出:-2.0000000000000004

正数%负数=正数;System.out.println(5.9%-3.9); //输出:2.0000000000000004

 

一元运算符(++,--)

int a=3;

int b=a++; //执行完后,b=3,a=4。先给b赋值,a再自增。

int c=++a;//执行完后,c=5,a=5。先自增,在给b赋值。

注意:Java中的乘幂处理:

int a=3^2; //Java中不能这么处理,^是异或符号。

double b=Math.pow(3,2);

Math类提供了很多科学和工程计算需要的方法和常数。

 

布尔逻辑表达符(必须是布尔值)

& | 位运算符

逻辑与:&&和&,逻辑或:||和|,逻辑非:!。(与,或、为二元运算符)

逻辑与和逻辑或采用短路ude方式。从左到右计算,如果确定值则不会在计算下去。

逻辑与只要有一个为false,则直接返回false。

逻辑或只要有一个为true,则直接返回true。

boolean c=1>2&&2>(3/0); //短路计算方式,因此2>(3/0)并没有运算。

“&”“|”不采用短路计算,就是说即使是前面判断完成,后面的判断依然运行!!!

System.out.println(true&true);
        System.out.println(true&false);
        System.out.println(false&false);
        System.out.println(true|true);
        System.out.println(true|false);
        System.out.println(false|false);

输出结果:

true
false
false
true
true
false

!非 从右往左运算

例如:!!X=!(!X)

 

位运算符

~取反 &按位与 |按位或 ^按位异或

<<:左移运算符,>>:右移运算符,>>>>:无符号移位运算符。

右移一位相当于除2取商。

左移一位相当于乘2。

二进制比较&【与】只要有0就是0,同是1才是1

二进制比较| 【或】只要有1就是1,同是0才是0

二进制比较~ 【非】取反!取反!取反!自行脑补,0就是1,1就是0。

二进制比较^ 按位异或 相同得0 不同得1。

| 按位或:
    参与运算的两数各对应的二进位相或.只要对应的二个二进位有一个为1时,结果位就为1
        例如: 1|2 : 0001 | 0010 = 0011
                 9|5 : 1001 | 0101 = 1101    所以9|5=13

& 按位与:
    参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1,否则为0
        例如: 1&2 : 0001 & 0010 = 0000
                 9&5 : 1001 & 0101 = 0001    所以9&5=1

^ 按位异或:
    参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1
        例如: 1^2 : 0001 ^ 0010 = 0011
                 9^5 : 1001 ^ 0101 = 1100    所以9^5=12


--------------------- 
作者:Super_Me_Jason 
来源:CSDN 
原文:https://blog.csdn.net/Super_Me_Jason/article/details/79707992 
版权声明:本文为博主原创文章,转载请附上博文链接!

((先讲~【非】

注意了:取反是按位取反

int是32位 十进制20 二进制表示为0b0000_0000_0000_0000_0000_0000_0001_0100

取反后                        二进制表示为0b1111_1111_1111_1111_1111_1111_1110_1011

结果为:-21

还有一个简单的方法0取反就是-1,所以20取反就是-21,999取反就是-1000

))

    System.out.println(10&20); 输出:0

解析:10的二进制是1010

            20的二进制是10100

运算过程:

            01010

          &--------

            10100

结果:00000 转 十进制 0


    System.out.println(10|20); 输出:30

 

解析:10的二进制是1010

            20的二进制是10100

运算过程:

            01010

           |--------

            10100

结果:11110 转 十进制 30

int a=3*2*2;

int b=3<<2; //相当于3*2*2

int c=12/2/2;

int d=12>>2; //相当于3/2/2

输出: a=12,b=12,c=3,d=3

位运算相关常识

 

扩展运算符

 

运算符

用法举例

等效的表达式

+=

    a += b

    a = a+b

-=

    a -= b

    a = a-b

*=

    a *= b

    a = a*b

/=

    a /= b

    a = a/b

%=

    a %= b

    a = a%b

字符串连接符

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后在进行连接。

int c=12;

System.out.println("c="+c); //输出c=12

字符串相连:加号两边只要有一个为字符串,则整个结果为字符串。

System.out.println(1+2+3+4+"5");输出:105
System.out.println("5"+1+2+3+4);输出:51234

三目条件运算符(又称三元运算符)

三木条件运算符,语法格式:

X?Y:Z

其中X为boolean类型表达式,先计算X的值,若为true,则整个三目运算的结果为表达式Y的值,否则整个运算结果为表达式Z的值。

例如:

int score=80;

int x=-100;

String type=score<60? "不及格":"及格";

 

运算符优先级的问题

 


R to L

.   ( )   { }   ;   ,
++ --   ~ ! (data type)

L to R

* / %

L to R

+ -

L to R

<< >> >>>

L to R

<  >  <=  >=  instanceof

L to R

== !=

L to R

&

L to R

^

L to R

|

L to R

&&

L to R

||

R to L

? :

R to L

 =   *=   /=   %= 
 +=   -=   <<=   >>=  
>>>=   &=   ^=   |=

大家不要去刻意的记住它,表达式里面优先使用小括号来组织!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_Pmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值