站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
JAVAjdk5的拆箱与装箱
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
<span style="text-align:center; border:1px solid #000; float:right; padding:6px;"><strong>导航:</strong> [[JAVA学习教程#JAVA学习教程|上一页]] | {{template:开发语言导航}}</span> <div style="clear:both;"></div> 所有对象型的数据类型的基类是java.lang.Object .而写[[java]][[程序]]的时候非常多的工作都是在写这些类,和实现里面的方法。而偏偏就有那么8种基本类型和他们不一样。以至于让你来回在这两种之间转换,这是很让人头疼的事情。Java中int,long,char这样的类型不是对象型。因此java里提供了一种叫做包装类(wrapper)的东西,使基本类型,有着相应的对象类型Integer,Long,Character等。这样就可以,先把基本类型的东西,转成对象来用,然后再转回去。来来回回,千锤百炼。 <br> 到了jdk5.0的时候呢,就不用了。看下面的例子: <br> 实践:<br> public class Test1 { <br> public static void main(String[] args) { <br> // 装箱<br> int i = 0;<br> Integer integer = i;//i这么一个基本类型的数,可以赋值给Integer型的变量<br> // 简单的拆箱<br> int j = integer; //integer这种原始类型的数,也能赋值给j这个原始类型的变量<br> Integer counter = 1; // 装箱<br> int counter2 = counter; // 拆箱<br> while (counter < 100) {<br> System.out.println("计数 "+counter++); //看啊,counter这个对象型的数,还能自动增加<br> }<br> }<br> } <br> 在幕后JVM已经自动执行了转换,同理Boolean和boolean之间也可以,自动拆箱装箱。但是,Integer和int毕竟还是有着不同的。<br> 看下面例子:<br> public class Test2 {<br> public static void main(String[] args) {<br> Integer i1 = 256;<br> Integer i2 = 256;<br> if (i1 = = i2) <br> System.out.println("相等!");<br> else <br> System.out.println("不相等!");<br> }<br> } <br> 结果输出的是“不相等!”,两个对象比较,它们在内存中开辟的是两个地址怎么能相等呢?<br> 警告:你可千万不能依赖这个结果,请把i1和i2的值,改成100.(请看Test3.java)看看什么结果,令人惊讶的是改了个数,居然输出了“相等!”。<br> 这是因为JVM可以选择要尝试这段代码的最佳优化,并对两个Integer对象使用一个实例,这样的话“= =”就会返回true了。在自动装箱时对于值从–128到127之间的值,使用一个实例。 这种装箱与拆箱机制对,程序流程控制语句,也有很大影响:<br> public class Test4 {<br> public static void main(String[] args) {<br> Boolean arriving = true;<br> Integer peopleInRoom = 0;<br> int maxCapacity = 100;<br> while (peopleInRoom < maxCapacity) {<br> if (arriving) {<br> System.out.printf("很高兴见到你.%d号先生\n",peopleInRoom);<br> peopleInRoom++;} <br> else {<br> peopleInRoom--;<br> }<br> }}} <br> 另外一个从unboxing获得好处的语句是switch.在jdk5.0之前的JVM,switch接受int、short、character或者byte值,而在unboxing的操作中,你现在也可以为它赋予新引入的enum之外的Integer,Short,Char以及Byte值。Enum的值 <br> [[category:Java教程]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:开发语言导航
(
编辑
)