wrapper类注意

Integer、Boolean等wrapper类以及BigInteger、BigDecimal是immutable的,所以也有与String类似的地方,不过没有IntegerBuffer之类的东西。不过Float, Double比较特殊。如B$[Dw
T a1 = 10; //T代指Byte,Integer,Short,Long,Boolean。 注:应用了JDK5的AUTOBOXINGou,iDi
T a2 = 10;0&HV
if (a1 == a2)Hk:UdG
System.out.println(true);wK
else©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  -5
System.out.println(false);*z
这时总是true,和String有点类似Q
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  G]M
//Float时BI,rP^
Float i1 =  (float)10.0;yg$p
Float i2 =  (float)10.0;M_uc#O
if (i1==i2)J/
  System.out.println(true);h`B n
else©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  )
  System.out.println(false);HbYZz
这时总是false>
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  Su
//Double时"8OX
Double i1 =  10.0;QcYHa
Double i2 =  10.0;pd
if (i1==i2)+vh{~D
  System.out.println(true);>TD7R
else©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  v2
  System.out.println(false);+n}5,;
这时总是falseZp@>*
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  XA#i
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  #vQ^
总之如果比较两个Wrapper类的值用equals,以免不必要的麻烦2TY<+X
3) 再看GV*
String s1 = new String(“Hello”);IdKVZ
String s2 = new String(“Hello”);XWF|&"
s1 == s2 = false;#WxS
//因为new的时候JVM不管heap中有没有”Hello”对象都会产生一个新的”Hello”对象X
String s3 = “Hello”; //重新创建对象”Hello”, 并令s3指向对象”Hello”26~f
s3 == s1 = false; //不同对象当然false)
String s4 = “Hello”; &G,Xk|
s3 == s4 = true;  //故伎重演,jvm清楚的知道哪些用了new,哪些没用newi!:{K
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  8.CDv
3. 方法的参数传递中都是以reference传递,而primitive传递的是副本,但如果传递的是Integer、Boolean等wrapper类和String类的Object则是以immutable方式传递。示例:pXKx%`
import java.awt.Point;GA'kw&
class HelloWorld7Y
{©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  j
 public static void modifyPoint(Point pt, String j, int k, Integer m, Boolean b)0_1PDM
 {+hF
   pt.setLocation(5,5);                                      h7
   j = "15";5
   k = 25;U
   m = 35;D4K
   b = true;@
   System.out.println("During modifyPoint " + "pt = " + pt +|85
                      " and j = " + j+ " and k = "+ k+ 6gaWUR
                      " and m = "+ m+ " and b = "+ b);Rax)O
 }>
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  XE#!Y
 public static void main(String args[])ZB8[
 {Lfoo#
   Point p = new Point(0,0);                                 Aik^1B
   String i = "10";Z3]!A
   int k = 20;hg`*
   Integer m = 30;:4
   Boolean b = false;^7g{/k
   System.out.println("Before modifyPoint " + "p = " + p +O
                      " and i = " + i+ " and k = "+ k+ G~c^l
                      " and m = "+ m+ " and b = "+ b);,
   modifyPoint(p, i, k, m, b);                                        m*]
   System.out.println("After modifyPoint " + "p = " + p +TO~
                      " and i = " + i+ " and k = "+ k+ Mn +
                      " and m = "+ m+ " and b = "+ b);C
 }xfm
}©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛  |;
输出结果:vg[Bhz
Before modifyPoint p = java.awt.Point[x=0,y=0] and i = 10 and k = 20 and m = 30 and b = falseYKCv:`
During modifyPoint pt = java.awt.Point[x=5,y=5] and j = 15 and k = 25 and m = 35 and b = trueYbX(
After modifyPoint p = java.awt.Point[x=5,y=5] and i = 10 and k = 20 and m = 30 and b = false[

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值