|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在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。
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 |
|