java编程中容易犯错的地方之BigInteger_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java编程中容易犯错的地方之BigInteger

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

 2012/9/8 11:52:13  web001  程序员俱乐部  我要评论(0)
  • 摘要:在java中,有很多容易被忽视的地方,今天在网上看到一个java的谜题,代码如下:BigIntegerfive=newBigInteger("5");BigIntegerfour=newBigInteger("4");BigIntegertotal=BigInteger.ZERO;total.add(five);total.add(four);System.out.println(total);乍一看,觉得这个代码应该输出9,毕竟4+5=9嘛。其实,如果你运行一下这段代码(这段代码不能直接运行
  • 标签: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。

?

分析:

  1. 不可变类型种类:String、BigDecimal、BigInteger和各种包装器类型都是不可变类型。
  2. 对于String不可变的特性在我另一篇博文中说到。
  3. 比如BigInteger的add方法,并不会改变两个操作数即现有实例,而是返回新的实例。

?

结论:

在调用不可变对象的方法时,如果对于看起来是对对象进行改变的方法,则现有实例并不会改变,而是返回一个新的实例。

发表评论
用户名: 匿名