1-对象数据类型如何判断相等(Integer、Long、Float、Boolean)
对于包装类对象的比较可以统一用equals
可以直接看源码
直接将数值取出来,进行的比较。
我对等号的理解是,地址。同一个对象他的地址就相同,老师的代码中,用等号进行比较,有时候会是对的的原因是因为,在-127-127这个范围设置了缓存的原因,会取同一个对象,所以相等,如果超出了这个范围就无法相等了。像129就不相等。更直观地可以设置断点,来看一下。
从上图很容易看出来,当数值不大于127时,如果用过,再次使用的话,会直接拿出来,如果大于127时,会再开辟一个空间,也就是因为常量池的原因。
2-与基本数据类型相比有何区别
初次学习时只是知道因为java是面向对象的思想,然后int类型的数据是面向机器的,很多时候需要用到面向对象,会更方便。查找相关博客,结合所学分析。
1.包装类型可以为null,而基本类型不能为。当数据库查询为空时,需要自动拆箱。(装箱拆箱就是在jdk1.5之前,Integer申明还需要申明,现在默认了)。
阿里开发手册:数据库的查询结果可能是 null,如果使用基本类型的话,因为要自动拆箱(将包装类型转为基本类型,比如说把 Integer 对象转换成 int 值),就会抛出 NullPointerException 的异常。
2.包装类型可用于泛型,而基本类型不可以。
对于泛型的理解不是很深,只有初步的理解,当个参数使用
3.二者存储的区域也不同,基本类型是在栈中放的,而包装类是在堆中存放,会占用更多的空间,使用基本类型也比较方便。