Java作为面向对象语言,有人认为所看到的都是对象,事实上,在Java SE 5之前,基本类型默认并不是采用对象存在的如果您想要把基本类型作为对象来处理,就必须自行转换,不过,在Java SE 5之后,为基本数据类型提供了自动装箱和拆箱功能,使得将基本类型转换为对象变得极其便捷。

在这里来捋一捋java的基本数据类型,不理不要紧,一理才发现俺也掌握的不是那么明确,在这里俺也再次学习下

总计有八个,分别是

byte字节型(一个字节),char字符型(两个字节),short短整型(两个字节),int整型(四个字节),

long长整型(八个字节),float浮点型(四个字节),double双精度浮点型(八个字节),boolean型(一个字节)

在javase5之前,如果想要把基本数据类型作为对象来操作,就需要采用对应的对象,来把它们打包才行

现在虽然不用这样了,但其中也有一些要注意的地方,俺揪出来晒晒。

先说说类和对象,建立个概念吧先

类--可以认为是对象的设计图

对象--是按照设计图实现了的具体工具

先这么简单理解吧,如果真要扯开了说,那可是软件工程里面的一门专业课,我们有个概念就好

之所以要将基本类型数据打包成为对象,原因很简单,是因为对象可以携带更多的数据。

手动、自动装箱拆箱示例

Long,Integer,Double,Float,Boolean等等的类就是所谓的wrapper类,就跟wrapper这个单词所代表的意思一样,就是提供一个“包装,加壳”,把基本数据类型放在里面,来看代码,体会下先

publicclassWrapperDemo{

publicstaticvoid main(String[] args){

intdata1=21;

intdata2=24;

//打包成为对象

Integer data1Wrapper =newInteger(data1);

Integer data2Wrapper =newInteger(data2);

//原始数据直接除以3

System.out.println(data1/3);

//将数据打包,转换为double型,除以3

System.out.println(data1Wrapper.doubleValue()/3);

//比较

System.out.println(data1Wrapper.compareTo(data2Wrapper));

}

}

图1-1 WrapperDemo的运行结果

通过上面的代码和运行结果,看到了将基本数据类型打包成为对象带来的好处了吧,别着急,这还只是javase5之前的做法,在javase5之后就已经支持自动装箱和拆箱了,在这,就不再单独写代码出来了,只写几个能说明问题的语句就可以了,相信很容易理解的。

javase5之前,手动打包

Integerdata1=newInteger(10);

事项将基本类型数据转换为对象

javase5之后,支持自动打包

Integerdata1=10;

便可以实现将基本类型的数据转换为对象

eg:

在上面的代码中,可以采用,可以直接进行两个基本数据类型的比较

data1.compareTo(data2);

基本数据类型本身没有什么方法,当你运行之后会发现,它仍然可以正确运行,这就自动装箱和拆箱带来的好处

再来说说自动装箱拆箱

自动装箱和拆箱,从本质上讲,是编译器帮了我们的忙,这就是所谓的“编译器蜜糖”,既然这么好,是不是就可以放心的用了呢?

先别着急,喝口水,咱再接着唠

看看下面的情况,您是否了解

Integer i =null;//表明i没有参考至任何对象

intj = i ;//相当于 int j = i.intValue()

这样的代码,编译时是可以通过的,因为它的语法是正确的,但在运行时,就会排除NullPointerException错误,这是由于i并没有参考至任何对象造成的

个人建议,如果您对装箱拆箱不是理解的很清楚,***还是按部就班的一步一步的对它进行装包和拆包,这样,有的时候,可能会为你节省很多纠错的时间哦

还是自动装箱拆箱

publicclassBoxDemo{

publicstaticvoidmain(String[] args){

Integer data1 =500;

Integer data2 =500;

System.out.println(data1==data2);

}

}

在你看到接下来的运行结果前,您先猜猜看,运行的结果会是怎样的呢?true or false?

图1-2 BoxDemo运行结果

false?没错,它就是false,自动装箱时,对于值从-128-127之间的数,被装箱后,会被放在内存中进行重用,

如果超出了这个值的范围就不会被重用的,所以每次new出来的都是一个新的对象,结果自然会是false。

在这里,区别一个概念“==”和equals()

“==”是比较两个对象是不是引用自同一个对象。

“equals()”是比较两个对象的内容。

这个一定得搞清楚,否则,在遇到问题的时候,可真是会让人抓狂的。

【编辑推荐】

【责任编辑:小林 TEL:(010)68476606】

点赞 0

java装箱_谈谈Java的自动装箱和拆箱相关推荐

  1. java 节假日_谈谈JAVA实现节假日验证

    原标题:谈谈JAVA实现节假日验证 我们需要两个类,第一个类: 我们叫它验证类. 第二个类: 它是对法定节假日的抽象. 第一步开始: 当验证类被初始化的时候,会加载本年的所有法定节假日到一个list里 ...

  2. java面向对象_谈谈Java的面向对象

    类的拷贝和构造 C++是默认具有拷贝语义的,对于没有拷贝运算符和拷贝构造函数的类,可以直接进行二进制拷贝,但是Java并不天生支持深拷贝,它的拷贝只是拷贝在堆上的地址,不同的变量引用的是堆上的同一个对 ...

  3. Java基础__Integer类型中的自动装箱

    Integer类型的自动装箱:就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱. ...

  4. Java学习第七课...枚举.自动装箱.静态导入...-asp.net关注

    枚举使用enum这个关键字: enum Transport {CAR,TRUCK,AIRPLANE,TRAIN,BOAT} 虽然是对象,但是不能使用new... 声明一个枚举类型的变量: Transp ...

  5. c 与java 反射性能_谈谈Java 反射的快慢

    [相关学习推荐:java基础教程] 反射到底是好是坏 说到Java 中的反射,初学者在刚刚接触到反射的各种高级特性时,往往表示十分兴奋,甚至会在一些不需要使用反射的场景中强行使用反射来「炫技」.而经验 ...

  6. java多核并行计算_谈谈Java任务的并行处理

    前言 谈到并行,我们可能最先想到的是线程,多个线程一起运行,来提高我们系统的整体处理速度:为什么使用多个线程就能提高处理速度,因为现在计算机普遍都是多核处理器,我们需要充分利用cpu资源:如果站的更高 ...

  7. java stream 求和_谈谈Java任务的并行处理

    作者:ksfzhaohui 前言 谈到并行,我们可能最先想到的是线程,多个线程一起运行,来提高我们系统的整体处理速度:为什么使用多个线程就能提高处理速度,因为现在计算机普遍都是多核处理器,我们需要充分 ...

  8. hannoi塔java程序_基于Java实现的Hannoi汉诺塔自动演示程序

    1 设计要求 设计GUI界面的Hannoi塔.汉诺塔中有三个座,名字分别为A,B,C.初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上.用户可以用鼠标选中盘子,然 ...

  9. 微信公众平台java接口_微信公众平台自动消息接口(JAVA)

    一个小DEMO,通过发送地理位置,获取今明两天的气温情况. 代码部署在了OpenShift平台:地区定位以及天气服务由雅虎提供. 微信文档: http://mp.weixin.qq.com/cgi-b ...

最新文章

  1. 使用ueditor实现多图片上传案例——DaoImpl层(ShoppingDaoImpl)
  2. Maverick.Net介绍 (来自http://www.cnblogs.com/RicCC/archive/2006/09/17/506890.html)
  3. JDK1.8的接口新特性
  4. gson 不忽略空_java – Gson序列化字段只有在不为null或不为空
  5. ios wifi 定位_iOS 中的三种定位方式
  6. mysql插入反斜杠“\“丢失的解决方法
  7. 世界上最伟大的音乐、最经典的名曲都在这里!!!
  8. Unity Shader - 基础光照之漫反射
  9. Win10鼠标右键添加CMD选项
  10. 新浪云计算平台应用开发
  11. 《WEB性能测试实战》之WEB性能测试分析
  12. 韶音骨传导耳机怎么样?韶音与南卡骨传导哪款更好
  13. Vue3 第二十二篇:双向绑定样式style
  14. ASP木马实验(I春秋)
  15. LeetCode 254. Factor Combinations(因式分解)
  16. 二叉树层序遍历(宽度优先遍历bfs--队列)
  17. CAA教程——CATIA二次开发环境搭建
  18. 初步认识计算机的教学反思,《认识计算机》教学反思1
  19. DB210.5版本的官网下载和安装
  20. java ios中无法播放_iOS - 无法在后台播放声音

热门文章

  1. PMOS——用于电源开关浅析
  2. PIGOSS BSM对XenServer监控
  3. 网络安全 - 网址大全
  4. java抓取七麦app排行榜单数据 导出excel-20211201
  5. 元旦文案‖适合2021年跨年发的句子
  6. 自己思考得到的结论在辩论中没有信服力?
  7. STM32 加密思考
  8. 基于java jsp的科研项目管理系统
  9. 前端学习网站汇总收藏篇
  10. 三维坐标转换为二维坐标