数据类型达到最大值以后的变化,以及装箱后地址比较

一、单个基本类型占用bit(位)数

 

二、数据类型比较(包装类型地址比较)

这篇讲解Long缓存池的很有意思

https://www.jb51.net/article/146878.htm

/**
 * @ClassName IVTest
 * @Description TODO
 * @Author ljh
 * @Date 2020/10/510:06
 * @Version 1.0
 */
public class IVTest {
    public static void main(String[] args){
//八种基本数据类型测试包装后,进行地址比较("==" 比较)测试,
//Interger Double Float Short Long Character Byt//八种基本类型取值范围
//https://blog.csdn.net/qq_25800311/article/details/82945852
        //Boolean 无法测试,不同包装类型之间不能进行地址比较
        //byte short char 进行计算的时候会转换成int
        //如果是包装类型是不是拆箱然后转换成int?
        //实例化生成的是不同的对象,地址自然是不同的。
        //        Integer i = new Integer(1000);
        //        Integer j = new Integer(1000);
        // Integer 的缓存池范围是-128----127,
        //超过以后进行地址比较是不同的地址,上限可以修改。
        //        Integer j = 1000;
        //        Integer i = 1000;
        //Byte类型和Integer类型一致,因为byte的取值范围是-128----127,
        //所以byte是所有值都在缓存池。
        // byte类型到128 竟然不能这样定义了???
        // !!!忘了取值范围,128超过范围了。
        //下面的博客是解决溢出的问题,之前试过int的溢出,
//今天看到了byte觉得简单一些。
//https://blog.csdn.net/benjamin_whx/article/details/38704077
//                Byte j = 127;
//                Byte i = 127;
        //Character类型和Integer类型一致
//                 Character j = 127;
//                 Character i = 127;
        //Short类型和Integer类型一致,
        //SHORT的取值范围-32768~32767,SHORT长度16
//                Short j = 127;
//                Short i = 127;
        //Long 类型的默认缓存池和Integer一致
                Long j = 127L;
                Long i = 127L;
        //Double 进行地址比较都是false
//                Double j = 1.0;
//                Double i = 1.0;
        // Float 进行地址比较都是false
//                Float j = 1f;
//                Float i = 1f;
        //基本数据类型,值比较相等。
//                int i = 1000;
//                int j = 1000;
               // byte i = 10;
               // byte j = 10;
//总结规律 整型和Integer类型一致,浮点类型没有缓存池。注意取值范围即可
        System.out.println("j="+j);
        System.out.println("i="+i);
        System.out.println(i==j);
        //基本类型不能进行对象比较
        System.out.println(i.equals(j));
    }
}

三、装箱拆箱

装箱 Integer.valueof();

拆箱 x.intValue();

四、基本数据类型和包装类型进行地址比较

基本类型和包装类型进行比较不会发生对象变化可以一直相等,无论是地址还是值

五、关于补码,反码,原码

而java中的二进制都是采用补码形式存储:

⑴一个数为正,则它的原码、反码、补码相同

⑵一个数为负,则符号位为1,其余各位是对原码取反,然后整个数加1

六、关于溢出的问题

byte 128 会输出为-128

 

int -2147483648 -1 =2147483647

int 2147483647 +1 =-2147483648

所以int类型原理相同 ,不想思考啦,就这样吧

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值