Java基础-一些易错知识点

public class Main {
    public static void main(String[] args) {
        byte b;
        b=(byte) (127+3);
        System.out.println(b);
//        why?
//        127
        // 原码和补码  01111111
        //3
        // 补码和原码  00000011
        //  127+3底层都是补码相加
        //  结果:10000010-得出的是原码还要转换为补码(当然正数补码就是原码)
        //  11111110 对应  -126
        b+=1;//为什么这个不报错?
        //因为+=底层是自动进行类型转换,它是找到b的地址,然后吧对于里面的数据变成运算后的结果

        //b=b+1;//为什么这个错误?,因为+是一个整体,左边整体会向大的类型(int)转换
        //所有右边的是一个int,int不能直接赋给byte类型的b需要强转
        //而且= +效率比+=低,因为它需要先存储我们+的结果再赋值
        //关于>>和<<为什么比/2和*2效率高的原因也是这个
        
        int i=1,j=2,k=3;
        boolean a;
        a=i>j&&k++>0;
        System.out.println(k);//k的值为3不变,因为前面的i>j已经错了,所以不会运行表达式的后半部分
        //就是没有执行k++
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小袁拒绝摆烂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值