锁定老帖子 主题:问一个不太明白的面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-14
最后修改:2009-07-14
public interface IRev { public String reverse(String str); } public class myClass implements IRev { public String reverse(String str) { if ((null == str) || (str.length() <= 1)) { return str; } return new StringBuffer(str).reverse().toString(); } } 这个没有语法问题,也跑得通,但是对方问我这个实现什么时候go wrong,我没啥头绪。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-14
空串处理不对,但不会抛错
|
|
返回顶楼 | |
发表时间:2009-07-14
最后修改:2009-07-14
西北野狼 写道 空串处理不对,但不会抛错
if ((null == str) || (str.length() <= 1)) { return str; } |
|
返回顶楼 | |
发表时间:2009-07-14
最后修改:2009-07-14
没什么不对的
---------------------------------------- 原来是这样 |
|
返回顶楼 | |
发表时间:2009-07-14
最后修改:2009-07-14
if ((null == str) || (str.length() <= 1)) { return str; } 如果str为空,你返回的值是空,如果在其他地方你用到这个返回值,则会有空指针异常。如: String s = myclass.reverse(str); s.hashCode();//调用s的任何一个方法都会有异常 |
|
返回顶楼 | |
发表时间:2009-07-14
这类问题应该在调用reverse()方法前就要判断是否为空了,最好不要在reverse()方法里判断。
|
|
返回顶楼 | |
发表时间:2009-07-14
public class myClass implements IRev { public String reverse(String str) { if ((null == str) || (str.length() <= 1)) { return ""; } return new StringBuffer(str).reverse().toString(); } } |
|
返回顶楼 | |
发表时间:2009-07-14
langhua9527 写道 public class myClass implements IRev { public String reverse(String str) { if ((null == str) || (str.length() <= 1)) { return ""; } return new StringBuffer(str).reverse().toString(); } } 这样做会把单字符的字符串改变了。 要不在reverse前判断,要不就不要 str.length() <= 1 |
|
返回顶楼 | |
发表时间:2009-07-14
藝之憾 写道 if ((null == str) || (str.length() <= 1)) { return str; } 如果str为空,你返回的值是空,如果在其他地方你用到这个返回值,则会有空指针异常。如: String s = myclass.reverse(str); s.hashCode();//调用s的任何一个方法都会有异常 单单就上面的代码。。没什么错 |
|
返回顶楼 | |
发表时间:2009-07-14
最后修改:2009-07-14
if ((null == str) ||[color=red] (str.length() <= 1)[/color]) { return str; } 这个地方会出现空字符串的情况。 |
|
返回顶楼 | |