• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Java陷阱(六)

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/xwzhj/2019/0611/373.html

文章目录

  1. 1. 大问题
    1. 1.1. 分析
    2. 1.2. 修改
  2. 2. 差是什么
    1. 2.1. 分析
    2. 2.2. 建议
  3. 3. 日期游戏
    1. 3.1. 分析
    2. 3.2. 建议
  4. 4. Math.abs方法
    1. 4.1. 分析


微信公众号

摘自《Java解惑》。这些问题都很经典,可以细细品味。
今天讲解的问题如下,大问题、差是什么、日期游戏、Math.abs方法。

大问题

public class BigProblem2 {  
  public static void main(String[] args){  
      BigInteger a = newBigInteger("5000");  
      BigInteger b = newBigInteger("1000");  
      BigInteger c = BigInteger.ZERO;  
      c = c.add(a);  
      c = c.add(b);  
      System.out.println(c);  
  }  
}  

分析

BigInteger实例是不可变的。String、BigDecimal、Integer、Long、Short、Byte、Character、Boolean、Float、Double也是如此。我们不能修改它们的值,对这些类型的操作将返回新的实例。

修改

public class BigProblem {  
  public static void main(String[] args){  
      BigInteger a = newBigInteger("5000");  
      BigInteger b = newBigInteger("1000");  
      BigInteger c = BigInteger.ZERO;  
      c.add(a);  
      c.add(b);  
      System.out.println(c);  
  }  
}  

差是什么

public class Differences {  
  public static void main(String[] args){  
      int a = 012;  
      int b = 10;  
      System.out.println(a-b);  
  }  
}

分析

以0开头的整形常量将被解释成为八进制数值。

建议

千万不要在一个整型常量前面加一个0,这会使它变成一个八进制常量。

日期游戏

public class DatingGame {  
  public static void main(String[] args){  
      Calendar cal = Calendar.getInstance();  
      cal.set(1999,12, 31);  
      System.out.println(cal.get(Calendar.YEAR));  
  }  
}

分析

Date将一月表示为0,而Calendar延续了这个错误。

建议

在使用Calendar或Date的时候一定要当心,千万要记得查阅API文档。

Math.abs方法

public class Abs {  
  public static void main(String[] args){  
      int i = Math.abs(Integer.MIN_VALUE);  
      System.out.println(i);  
  }  
}

分析

Math.abs不能保证一定会返回非负的结果。如果它的参数是Integer.MIN_VALUE或者Long.MIN_VALUE。

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!