Java运算符以及优先级

Java中的运算符以及其优先级

这里写图片描述

1. & 和 && 的区别

相同点:& 和 && 都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为真(true)的时候,整个运算结果才为true,否则,只要有一方为false,则结果为false。

不同点:&&还具有短路的功能,即如果第一个的表达式为false的时候,则不会再计算第二个表达式的值。
例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所有不会出现NullPointerException(控制指针异常)(因为当str为null的时候,执行str.equals(“”)时会抛出空指针异常)。
例如:当x=30时;if(x==33&++y)这里即使第一条表达式的值为false,但是还是会执行第二条表达式:(++y),所以这里y会增长,而if(x==33&&++y)这里的y不会增长!
&还可以作做位运算符,当&操作数两边的表达式不是boolean型时,&表示按位与运算。位运算符主要针对二进制;与运算符用符号“&”表示,其使用规律是:两个操作数都为1时,结果才为1,否则结果为0。

public class test {

    public static void main(String[] args) {
        int a = 7;//7用二进制表示为:00000111
        int b = 8;//8用二进制表示为:00001000
        //7&8 得到的结果是:00000000 即为十进制的0
        System.out.println(a&b);
    }
}

这段代码的输出结果为0;


2.位运算?

2<<3;
因为将一个数左移n位,就相当于乘以2的n次方,那么一个数乘以8只要将其左移三位即可。而位运算是CPU直接支持的,效率最高的。
补充:

  • <<:左移运算符,num<<1, 相当于num乘以2
  • >>:右移运算符,num>>1,相当于num除以2
  • >>>:无符号右移,忽略符号位,空位都以0补齐
    例如:7<<1 = 14; 7>>1=3

-3>>>1 = 2147483646
反码等于原码取反
补码等于(反码+1)
负数原码等于其正数的补码

十进制3
原码00000000 00000000 00000000 00000011
反码11111111 11111111 11111111 11111100
补码11111111 11111111 11111111 11111101
十进制-3
原码11111111 11111111 11111111 11111101

最后得到的结果是:2147483646


i++和++i
- i++:程序执行完毕才进行自增
- ++ i: 程序开始执行进行自增

int i=1;
i+++i++
System.out.println(i);
输出结果是:3

i+++i++ 即 ( i++)+(i++)

示例代码:

package Test_10;

public class Test {

    public static void main(String[] args){
        int count = 0;
        for(int i=0;i<=100;i++){
            count = count++;
        }
        System.out.println(count);
    }
}

得到的结果0
for循环外面count=0,循环里面的count=count++;(count的值都等于count值,而后面count自加不影响循环外面count结果);循环count都为0



int i=5;
int s=(i++)+(++i)+(i–)+(–i);

结果:
int s=(i++)+(++i)+(i–)+(–i);
int s = (5)+(++6)+(7–)+(–6)
=5+7+7+5
=24;

关于i=i++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值