A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 孙胜 于 2013-6-4 21:00 编辑

1:一个对象本身实现了CharSequence接口,这两种方法是不是效果是相同的?
2:如果对象没有实现这个接口,toString调用的是Object的方法,强制转换会造成运行时错误.
这就是我的理解,各位高手,这样对不对,还有什么补充的,欢迎告知

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

4 个回复

倒序浏览
强转的你得知道它到底是什么类型,不然会出异常
toString的话只要该对象有这个方法就能调用
很多类都对toString重写了 不一定调用的是Object的toString

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
强制转换成String,只是说把这个对象的类型转换成了String这种类型,前提是知道这个类型就是String的时候才可以转,否则编译期也不通过的。你自己写一个类实现CharSequence接口,也是不能强转为String的,实现这个接口只是说明这个类创建出来的对象可以有哪些行为而已,跟String没有关系。
toString是基类Object的一个方法,如果一个类没有重写这个方法、也没有父类,默认调用的就是基类Object的toString方法,如果显示的继承某个类,那么调用的就是继承的那个类的toString方法。而String类本身也重写了这个方法的。
回复 使用道具 举报
一般从 object 到 string 有四种方式(比如有object obj),包括显式转换和as关键词的使用:obj.ToString()、Convert.ToString()、(string)obj、obj as string。他们都能将 object 对象转换成 string 对象。这里十万个为什么再接前文重点讲讲他们的异同以及在实际编程中如何选用。
前两个方法通常是由别的对象得到 string 对象,它们间的区别如前文所述主要表现在要转换的对象为 null 时,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用 Convert.ToString 不会抛出异常而返回一个空字符串。


用强制转换 (string)obj 要求 obj 的运行时类型必须是 string。如果不是,就会抛出异常。
用 as 方法则会相对平稳,当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。


所以在通常在我们需要得到某个对象的 string 表达形式时,我们应该使用 ToString 和 Convert.ToString,这时候你就得根据情形选一个,假如你能保证你的对象不为 null,则两个差不多。如果有可能为 null,你就应该用 Convert.ToString,如果你希望它为 null 的时候抛出异常,那么当然可以选择 ToString。
回复 使用道具 举报
四楼的说法比较详细,解释的很好,这里谢谢了
二楼说的是什么,不明白,白天版主认真看帖子不要乱加分,会误导别人的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马