黑马程序员技术交流社区

标题: "a".equals(s)与s.equals("a")的区别 [打印本页]

作者: MGC    时间: 2014-8-6 17:16
标题: "a".equals(s)与s.equals("a")的区别
String s={a};
想请问"a".equals(s)与s.equals("a")的区别
作者: 执笔梦    时间: 2014-8-6 17:24
s.equals("a")中的s可能为null.可能抛空指针异常
作者: 小黑子    时间: 2014-8-6 17:28
表示刚看到异常…………不懂。。。。
作者: kakasa    时间: 2014-8-6 20:16

看不懂。。、
第一句到底什么意思。。
作者: 戒风    时间: 2014-8-6 20:33
不懂,这是哪块的问题?
作者: as_heima    时间: 2014-8-6 20:47
"a".equals(s) 这个因为肯定可以点出equals方法与s相比较,而s.equals("a")这个如果s里为空,因为空根本点不出equals方法,所以一般这样判断的时候,最好还是用"a".equals(s) 这种写法:lol
作者: 南柯一梦    时间: 2014-8-6 20:53
表示语法错误,希望附上源码
作者: 晓风    时间: 2014-8-6 20:54
因为s是一个变量,所以s可能为空,则s.equals("a")运行时可能抛空指针异常;"a"表示一个字符串对象,不可能为空,所以"a".equals(s)运行是不会跑空指针异常。
作者: zhouqun    时间: 2014-8-6 21:44
s可能为空
作者: MGC    时间: 2014-8-7 00:22
as_heima 发表于 2014-8-6 20:47
"a".equals(s) 这个因为肯定可以点出equals方法与s相比较,而s.equals("a")这个如果s里为空,因为空根本点 ...

好的,明白了谢谢:handshake
作者: hmid    时间: 2014-8-7 00:59
沙发说的没错
作者: M单色调    时间: 2014-8-7 08:30
点前常用变量,这是编码习惯!主要是为了防止空指针异常!
作者: 申航航    时间: 2014-8-7 08:38
怎么回事啊
作者: 黑马_java猿    时间: 2014-8-7 09:07
相等吧  是吗
作者: 小小菜鸟007    时间: 2014-8-7 09:13
第一种不会抛异常吗?
作者: 李章敏    时间: 2014-8-7 09:13
s是一个变量,所以s可能为空,则s.equals("a")运行时可能抛空指针异常;"a"表示一个字符串对象,不可能为空,所以"a".equals(s)运行是不会跑空指针异常。
作者: justin1258    时间: 2014-8-7 09:34
后者需要先判断s是否为null,前者不需要
作者: 渠嘉树    时间: 2014-8-7 09:52
{:3_48:}......................
作者: 渴望学习    时间: 2014-8-7 11:29
路过 2楼 正解!!
作者: 莫忘本心    时间: 2014-8-7 12:49
常量放前面
作者: AEhaojiu    时间: 2014-8-7 12:54
前者不会抛出空指针的异常 后者会 因为s可能为null




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