来看Java JDK之主动装箱和拆箱
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。基础数据(Primitive)范例的主动装箱(autoboxing)、拆箱(unboxing)是自J2SE5.0入手下手供应的功效。固然为您打包基础数据范例供应了便利,但供应便利的同时暗示埋没了细节,倡议在可以辨别基础数据范例与对象的不同时再利用。
autoboxing和unboxing
在Java中,一切要处置的工具几近都是对象(Object),比方之前所利用的Scanner是对象,字符串(String)也是对象,以后还会看到更多的对象。但是基础(Primitive)数据范例不是对象,也就是您利用int、double、boolean等界说的变量,和您在程序中间接写下的字面常量。
在前一个大节中已大抵看到了操纵对象的便利性,而利用Java有一段工夫的人都晓得,偶然必要将基础数据范例转换为对象。比方利用Map对象要操纵put()办法时,必要传进的参数是对象而不是基础数据范例。
要利用打包范例(WrapperTypes)才干将基础数据范例包装为对象,前一个大节中您已晓得在J2SE5.0之前,要利用以下语句才干将int包装为一个Integer对象:Integerinteger=newInteger(10);
在J2SE5.0以后供应了主动装箱的功效,您能够间接利用以下语句来打包基础数据范例:Integerinteger=10;
在举行编译时,编译器再主动依据您写下的语句,判别是不是举行主动装箱举措。在上例中integer参考的会是Integer类的实例。一样的举措能够合用于boolean、byte、short、char、long、float、double等基础数据范例,分离会利用对应的打包范例(WrapperTypes)Boolean、Byte、Short、Character、Long、Float或Double。上面间接利用主动装箱功效来改写典范4.4。
典范4.5 AutoBoxDemo.java
publicclassAutoBoxDemo{
publicstaticvoidmain(String[]args){
Integerdata1=10;
Integerdata2=20;
//转为double值再除以3
system.out.println(data1.doubleValue()/3);
//举行两个值的对照
system.out.println(data1.compareTo(data2));
}
}
程序看来简便了很多,data1与data2在运转时就是Integer的实例,能够间接举行对象操纵。实行的了局以下:
3.3333333333333335
–1
主动装箱使用的办法还能够以下:
inti=10;
Integerinteger=i;
也能够利用更一样平常化的java.lang.Number类来主动装箱。比方:
Numbernumber=3.14f;
3.14f会先被主动装箱为Float,然后指定给number。
从J2SE5.0入手下手能够主动装箱,也能够主动拆箱(unboxing),也就是将对象中的基础数据形状信息从对象中主动掏出。比方上面如许写是能够的:
IntegerfooInteger=10;
intfooPrimitive=fooInteger;
fooInteger援用至主动装箱为Integer的实例后,假如被指定给一个int范例的变量fooPrimitive,则会主动变成int范例再指定给fooPrimitive。在运算时,也能够举行主动装箱与拆箱。比方:
Integeri=10;
System.out.println(i+10);
System.out.println(i++);
上例中会显现20与10,编译器会主动举行主动装箱与拆箱,也就是10会先被装箱,然后在i+10时会先拆箱,举行加法运算;i++该行也是先拆箱再举行递增运算。再来看一个例子:
Booleanboo=true;
System.out.println(boo&&false);
一样的boo本来是Boolean的实例,在举行AND运算时,会先将boo拆箱,再与false举行AND运算,了局会显现false。
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 是一种使用者不需花费很多时间学习的语言 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 是一种使网页(Web Page)产生生动活泼画面的语言 是一种突破用户端机器环境和CPU 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
页:
[1]