博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA学习笔记—JDK1.5的自动装箱与拆箱
阅读量:7071 次
发布时间:2019-06-28

本文共 1026 字,大约阅读时间需要 3 分钟。

hot3.png

1.Java中的数据类型,可分为两类:

a.基本数据类型,也称原始数据类型。short,char,int,long,float,double,boolean,byte

  用“==”进行比较。

b.引用数据类型(类)

  比较引用类型变量值的时候,需要调用equals()方法,当他们用“==”进行比较的时候,比较的是他们在内存中的存放地址。

2.先运行这段代码

public class TestClass {     public static void main(String[] args) {        Integer a=10;        Integer b=10;        Integer c=200;        Integer d=200;        System.out.println("a==b:"+(a==b));        System.out.println("c==d:"+(c==d));    }}

结果为:

a==b:truec==d:false

结果分析:为什么两次的结果不一样呢?后来去网上查阅了一下资料,Integer a=10,实际上执行了Integer a=Integer.valueOf(10)装箱操作,而在自动装箱时对于从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用(这里面涉及到一种设计模式,叫享元模式),也就是说,其实此时a和b在内存中的地址是一样的,所以结果为true,而c和d的值大于127,他们在内存中的地址不会被共享,结果false.

3.再来看看自动拆箱,其实自动拆箱很简单,我们平时用的比较多,只是概念不清晰。

public class TestClass {     public static void main(String[] args) {        Integer a=new Integer(200);        int b=200;        System.out.println("a==b:"+(a==b));    }}

当Integer类型数据作运算的时候系统就会自动执行了拆箱过程a.intValue(),再进行运算。

注:自动拆箱和装箱是JDK1.5版本新加的特性,所以之前的版本并不支持。

转载于:https://my.oschina.net/visionit/blog/399440

你可能感兴趣的文章
每日英语:Six Ways to Modernize Your Car
查看>>
使用VS2010开发Qt程序的一点经验
查看>>
tpl demo
查看>>
用Ghostscript API将PDF格式转换为图像格式(C#)
查看>>
Android自定义进度条
查看>>
编写高质量代码改善C#程序的157个建议[匿名类型、Lambda、延迟求值和主动求值]...
查看>>
CkEditor 插件开发
查看>>
《如何让TT T4模板输出多个文件(VS2010中)》-- access911.net 文章
查看>>
CSS Hack大全-可区分出IE6-IE10、FireFox、Chrome、Opera
查看>>
从程序员到项目经理(16):原来一切问题都是可以解决的【转载】
查看>>
当kfreebsd 用户遇见openSUSE系统
查看>>
Struts2自己定义拦截器实例—登陆权限验证
查看>>
调用webservice查询手机号码归属地信息
查看>>
RESTFul basic introduction
查看>>
NoSQL数据库的分布式模型
查看>>
Win7下同时使用有线和无线时的优先级设置
查看>>
Python文件遍历二种方法
查看>>
GUN 的汇编语法
查看>>
java.lang.VerifyError: Inconsistent stackmap frames at branch target
查看>>
sqlite 判断表中是否包含 某个字段
查看>>