当前位置:编程学习 > JAVA >>

java编程中容易犯错的地方之BigInteger

在java中,有很多容易被忽视的地方,今天在网上看到一个java的谜题,代码如下:
 
[java] 
BigInteger five  = new BigInteger("5"); 
BigInteger four = new BigInteger("4"); 
BigInteger total = BigInteger.ZERO; 
total.add(five); 
total.add(four);   
 
System.out.println(total); 
 
乍一看,觉得这个代码应该输出9,毕竟4+5=9嘛。其实,如果你运行一下这段代码(这段代码不能直接运行,你得需要修改一下),会惊奇的发现,这段代码居然打印出了0。
 
分析:
不可变类型种类:String、BigDecimal、BigInteger和各种包装器类型都是不可变类型。
对于String不可变的特性在我另一篇博文中说到。
比如BigInteger的add方法,并不会改变两个操作数即现有实例,而是返回新的实例。
 
结论:
在调用不可变对象的方法时,如果对于看起来是对对象进行改变的方法,则现有实例并不会改变,而是返回一个新的实例。
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,