"a".equals(b)和b.equals("a")有什么区别

有这样的代码:
String b = "b";
"a".equals(b);
b.equals("a");
有人说这两种写法结果一样,但有些微区别,哪位达人能告诉我区别是什么?

好象是前者不易报错,后者在b为null时会报错。
在Java中,字符串本身就是对象,这样用也合理。
"a".equals(b);
当你不清楚b中会是什么的时候,这样写比较好些。

没人理啊,郁闷

"a".equals(b);比较好,据说某些有问题的时候会报错
b.equals("a");某些有问题的时候不报错

道听途说的,大致是这样

String b = "b";
"a".equals(b);//不会报null异常,推荐以这种方式判断
b.equals("a");//有可能会报null异常..