包装类型可以为 null,而基本类型不可以

别小看这一点区别,它使得包装类型可以应用于 POJO 中,而基本类型则不行。

POJO 是什么呢?这里稍微说明一下。

POJO 的英文全称是 Plain Ordinary Java Object,翻译一下就是,简单无规则的 Java 对象,只有属性字段以及 setter 和 getter 方法,示例如下。

class Writer {

private Integer age;

private String name;

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

和 POJO 类似的,还有数据传输对象 DTO(Data Transfer Object,泛指用于展示层与服务层之间的数据传输对象)、视图对象 VO(View Object,把某个页面的数据封装起来)、持久化对象 PO(Persistant Object,可以看成是与数据库中的表映射的 Java 对象)。

那为什么 POJO 的属性必须要用包装类型呢? 数据库的查询结果可能是 null,如果使用基本类型的话,因为要自动拆箱(将包装类型转为基本类型,比如说把 Integer 对象转换成 int 值),就会抛出 NullPointerException 的异常。

包装类型可用于泛型,而基本类型不可以

泛型不能使用基本类型,因为使用基本类型时会编译出错。

List list = new ArrayList<>(); // 提示 Syntax error, insert "Dimensions" to complete ReferenceType

List list = new ArrayList<>();

为什么呢?因为泛型在编译时会进行类型擦除,最后只保留原始类型,而原始类型只能是 Object 类及其子类——基本类型是个特例。

基本类型比包装类型更高效

基本类型在栈中直接存储的具体数值,而包装类型则存储的是堆中的引用。

很显然,相比较于基本类型而言,包装类型需要占用更多的内存空间。假如没有基本类型的话,对于数值这类经常使用到的数据来说,每次都要通过 new 一个包装类型就显得非常笨重。

两个包装类型的值可以相同,但却不相等

两个包装类型的值可以相同,但却不相等——这句话怎么理解呢?来看一段代码就明明白白了。

Integer chenmo = new Integer(10);

Integer wanger = new Integer(10);

System.out.println(chenmo == wanger); // false

System.out.println(chenmo.equals(wanger )); // true

两个包装类型在使用“”进行判断的时候,判断的是其指向的地址是否相等。chenmo 和 wanger 两个变量使用了 new 关键字,导致它们在“”的时候输出了 false。

而 chenmo.equals(wanger) 的输出结果为 true,是因为 equals 方法内部比较的是两个 int 值是否相等。源码如下。

private final int value;

public int intValue() {

return value;

}

public boolean equals(Object obj) {

if (obj instanceof Integer) {

return value == ((Integer)obj).intValue();

}

return false;

}

虽然 chenmo 和 wanger 的值都是 10,但他们并不相等。换句话说就是:将“==”操作符应用于包装类型比较的时候,其结果很可能会和预期的不符。

以上就是Java基本类型和包装类型的区别的详细内容,更多关于Java基本类型和包装类型的资料请关注脚本之家其它相关文章!

java的包装类型是什么用_Java基本类型和包装类型的区别相关推荐

  1. Java基本类型和包装类型总结

    1.Java的基本类型及其对应的包装器类 Java有8种基本类型:大致分为3类:字符,布尔,数值类型(在java中数值是不存在无符号的,这一点不像C/C++,他们的取值范围是固定的,不会随着机器硬件的 ...

  2. java基本类型和包装类型

    java是面向对象的语言为什么还要有基本类型,只有包装类型完全面向对象不行吗? java语言可以只有基本类型吗,为什么还有要包装类型? java中的基本类型和包装类型:   基本类型     包装器类 ...

  3. 基本类型和包装类型的区别详解

    六年前,我从苏州回到洛阳,抱着一幅"海归"的心态,投了不少简历,也"约谈"了不少面试官,但仅有两三个令我感到满意.其中有一位叫老马,至今还活在我的手机通讯录里. ...

  4. CSDN日报190929:面试官:兄弟,说说基本类型和包装类型的区别吧

    CSDN日报来啦!给大家奉上当日最新鲜的技术干货! 深度学习|[深度学习] 自然语言处理-Attention 作者:小墨鱼~~ 要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder ...

  5. 包装类型是什么?基本类型和包装类型有什么区别?

    Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是 Integer,从 Java 5 开始引入了自动装箱/拆箱机制,把基本类型转换成包装类型的过程 ...

  6. 基本类型和包装类型的区别

    1.基本类型有初始值,而包装类型的默认值是null 数据类型 默认值 byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '/u0000' ...

  7. java 基本类型封装类,Java 八种基本类型和基本类型封装类-九五小庞

    Java 八种基本类型和基本类型封装类-九五小庞 1.首先,八种基本数据类型分别是:int.short.float.double.long.boolean.byte.char: 它们的封装类分别是:I ...

  8. 【Java】浅析八种基本类型和包装类型

    Java八种基本类型 <Java八种基本类型分析> Java基本类型对应的包装类 Everything is object Java编程语言不把基本数据类型看作对象.Java 编程语言提供 ...

  9. java基本类型和包装类型的区别

    1.为什么存在基本类型: 在Java中正常应该设置对象,然后通过new一个对象存储在堆中,再通过栈的引用来使用对象,但对于简单的小的变量,用new 显的繁琐麻烦,所以产生了基本类型 2.有了基本类型, ...

最新文章

  1. 机器学习系列14:偏差与方差
  2. SparkSQL使用之Thrift JDBC server
  3. spring boot pom配置_125 SpringCloud服务配置中心
  4. EasyUI Tree判断节点是否是叶
  5. 你竟然没用 Nuget 构建项目?
  6. db9针232接口波特率标准_理解串口通信以及232,485,422常见问题
  7. 自定义checkbox样式
  8. Java-静态方法、非静态方法
  9. 云计算:OpenStack、Docker、K8S(Kubernetes容器编排工具)的演进史 | 附推荐阅读
  10. python 逆序_python编程题-句子的逆序
  11. mysql开启url重写_开启URL伪静态的方法
  12. 前后端请求设置签名验证,提升接口安全
  13. AssertionError: Invalid device id
  14. 微信小程序游戏「跳一跳」高分秘籍
  15. (已解决)win10重装后无法开启双显示屏
  16. NT3H2111_2211芯片简介
  17. Android端的彩票开奖查询系统
  18. 爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)
  19. 大数据平台接入API数据
  20. 淘宝/天猫API接口,买家卖家订单信息获取

热门文章

  1. 夜间灯光数据文章大合集
  2. PythonWeb_Django_04_bj
  3. 小学生有趣的创意课程_50有趣与创意错误404页,第1卷。 2
  4. python的def语句例题_下列 Python语句的输出结果是?
  5. Oracle 17002 For Windows异常解决办法
  6. team c语言,C语言 TeamSpeak 3 SDK连接问题
  7. 2018年高考631选计算机,2018年高三如何逆袭?高考631分学霸传授秘诀!
  8. 诺基亚Qt获得开发商支持 迎来新机遇
  9. 32位/64位 libmysql.dll和libmysql.lib下载
  10. 六十星系之50太阴太阳坐丑未