zoukankan      html  css  js  c++  java
  • 记一次强转bug

             晚上代码发现了一个同事的一个bug,出现原因是因为int类型强转String类型的原因:
             贴上bug代码:
             map.put("status", 0);
             String status = (String) map.get("status");
             出现了java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String错误
             自己当时也是不太明白强转的方式,所以在此记录一下(String), toString, 和String.valueOf的区别和使用方式

    (1)String :毫无疑问,这种就是强转形式,简单方便,效率高。java程序员可能看到效率高或许有些激动,但是它有他的不好,那就是局限性。在java的世界里没有什么东西是没有缺点的,总有一些好的方面同时也有一些不好的。不好的就是,
                          他只能是强转原本就是字符串的东西,如果原本不是字符串的话,那么就会报错。
    (2)toString: 在API文档中是这样说的,返回此对象本身(它已经是一个字符串了!!!)。按照它的意思就是说一般的对象或者参数都是有toString()的方法的,只是要注意在一个参数定义为int类型是就没有这个方法了。还有就是当参数为空
                          的时候.toString()方法就会报出空指针异常,这是这个方法的不好的地方使用时需要仔细斟酌一下
    (3)String.valueOf():  这个方法是静态的,直接通过String调用,可以说是完美,只是平时不习惯这样写而已,这样的实现避免了前面两个的不足和缺点。首先来看看他内部的实现机制在内部就是做了为空的判断的,以就不会报出空指针异常
      

  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/zhexuejun/p/11211436.html
Copyright © 2011-2022 走看看