黑马程序员技术交流社区

标题: null不能调用方法的一个误区 [打印本页]

作者: lizhi    时间: 2015-5-29 21:55
标题: null不能调用方法的一个误区
char[]chs={'a','b'};
String str=null;
char s=str.charAt(1);
编译会报错
char[]chs={'a','b'};
String str=null;
str=str.copyValueOf();
这种是会出结果的,不懂得问我

作者: songyu    时间: 2015-5-30 00:13
请问charAt()与copyValueOf()有什么具体的区别吗?
作者: JavaStudy770    时间: 2015-5-30 00:26
因为copyValueOf()是静态方法,可以把str.copyValueOf()看成是:String.copyValueOf()。对吗?
作者: jiatengde    时间: 2015-5-30 00:42
新人报道,正在努力中
作者: 灯火通明    时间: 2015-5-30 07:55
明白了。
作者: CLAY    时间: 2015-5-30 08:54
涨知识了
作者: mmakun    时间: 2015-5-30 11:19
这个倒还真不知道
作者: forTomorrow    时间: 2015-5-30 11:47
第一种是因为字符串为空,无指针地址,所以会报空指针异常,后面一个其实是把字符数组转换成字符串重新给str赋值
作者: 青龙李坤    时间: 2015-5-30 13:23
这两种是有区别的,不错,大家一起了解。
作者: 白水丶    时间: 2015-5-30 14:56
str 不是null么  怎么能拿str.charAt(1);
作者: lizhi    时间: 2015-5-31 08:43
songyu 发表于 2015-5-30 00:13
请问charAt()与copyValueOf()有什么具体的区别吗?

后面的是静态方法,前面的是普通方法

作者: lizhi    时间: 2015-5-31 08:44
白水丶 发表于 2015-5-30 14:56
str 不是null么  怎么能拿str.charAt(1);

这个不能呀,编译报错呀
作者: lizhi    时间: 2015-5-31 08:45
青龙李坤 发表于 2015-5-30 13:23
这两种是有区别的,不错,大家一起了解。

只要记住静态方法能用类名跟对象引用调用就可以了
作者: lizhi    时间: 2015-5-31 08:46
forTomorrow 发表于 2015-5-30 11:47
第一种是因为字符串为空,无指针地址,所以会报空指针异常,后面一个其实是把字符数组转换成字符串重新给st ...

不是,后面的是因为调用的方法是静态的,可以用类名直接调用
作者: lizhi    时间: 2015-5-31 08:47
mmakun 发表于 2015-5-30 11:19
这个倒还真不知道

那就加油去学习
作者: guojiadui    时间: 2015-5-31 09:21
进来来看看代码,也学习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2