str.equals("AA")和("AA").equals(str)这么些有什么区别?

一直以来都是str.equals("AA")这么写,后来听同事说建议("AA").equals(str)这样写,问其原因也没有说出个什么来。
后来项目跑LoadRunner发现确实("AA").equals(str)这么写比str.equals("AA")有优势,但是再网上一直没查出原因来,求解,谢谢。
同样还有str == null和null == str 颠倒过来写的区别

首先,空指针问题;
楼主不提这个问题我还没想到过效率问题,仅仅认为"a".equals(str)可以回避空指针
先谢谢
看来要看看源码才能看出点头绪来

"AA".equals("AA")与"AA".equals("AA")这样应该没什么区别吧

楼上正解。

主要是为了规避空指针的问题,如果是性能方面的话就要从内存寻址来考虑了。

str == null和null == str 区别在于前者你少写个等号是赋值不会报错后者会报错,当你做if判断的时候在你的IDE里面后者少写个等号报错会提醒你,这样会使你的程序免得因为马虎出现问题。
"AA".equals(str)确实是楼上所说回避空指针

[quote]str == null和null == str 区别在于前者你少写个等号是赋值不会报错后者会报错[/quote]
恩,妙。