java中 字符串转型问题

下面两种转型的本质区别是什么?

      String str ;
        str = obj.toString() ;  // 第一种
        str = (String) obj ;    // 第二种

越详细越好, 非常感谢 !!

第一种方式是java的规范,从Object继承的toString方法,至于继承那一套,就不用多说了;
第二中方式是强转,obj instanceof Clazz 为true可以强转,为false时强转的话报ClassCastException

结果是一样的,但是第一种较常用

再给你加一种:str = str+"";隐式转换为String类型

第一种方式是java的规范,从Object继承的toString方法,;
第二中方式是强转,obj instanceof Clazz 为true可以强转,为false时强转的话报ClassCastException;
第三种隐式转换为String类型,str = str+"";

个人觉得第一种更好,第二种毕竟是强制的转换