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)可以回避空指针先谢谢看来要看看源码才能看出点头绪来
解决方案二:
引用str == null和null == str 区别在于前者你少写个等号是赋值不会报错后者会报错恩,妙。
解决方案三:
str == null和null == str 区别在于前者你少写个等号是赋值不会报错后者会报错,当你做if判断的时候在你的IDE里面后者少写个等号报错会提醒你,这样会使你的程序免得因为马虎出现问题。"AA".equals(str)确实是楼上所说回避空指针
解决方案四:
楼上正解。主要是为了规避空指针的问题,如果是性能方面的话就要从内存寻址来考虑了。
解决方案五:
"AA".equals("AA")与"AA".equals("AA")这样应该没什么区别吧

时间: 2024-11-10 11:26:58

str.equals("AA")和("AA").equals(str)这么些有什么区别?的相关文章

CSS2 之 "特殊文本和BIDI文本的字符实体"

特殊文本和BIDI文本的字符实体Using NE NE NCR Using NCR "    &quot    "    quotation mark, =apl quote, U0022 ISOnum    &    &amp    &    ampersand, U0026 ISOnum    <    &lt    <    less-than sign, U003C ISOnum    >    &gt    &

class-为什么无参函数调用了前面加&amp;amp;quot;%d &amp;amp;quot;+会报错哪,只能把&amp;amp;quot;%d &amp;amp;quot;+去掉哪。

问题描述 为什么无参函数调用了前面加"%dn"+会报错哪,只能把"%dn"+去掉哪. class A { private int i; private int j; public void set(int a,int b) { i = a; j = b; } public A() { // System.out.printf("%dn"+"无参函数调用了"); System.out.printf("无参函数调用了&q

{&amp;amp;quot;Cookie 的“Name”=“ qqmusic_uin”部分无效。&amp;amp;quot;}

问题描述 publicCookieContainergetCookie(stringcookie){CookieContainermyCookieContainer=newCookieContainer();stringcookieStr=cookie;string[]cookstr=cookieStr.Split(';');foreach(stringstrincookstr){if(str.IndexOf("=")>0){string[]cookieNameValue=str

&amp;amp;quot;package中的javac,java用法&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &amp;amp;quot;制作可执行jar文件&amp;amp;quot;

执行 java初学者最早会用的命令无非是就是javac和java,但即使这么简单命令也还会把我们弄得头皮发麻 -__- .Roger下面就"package中的javac,java用法"和"制作可执行jar文件"做点简单的解释. 最基础的东西就不废话了,至于package先讲讲我的理解,因为我觉得知道这点对于开发还是很有帮助的.举个例子说:有两个类Tom和Jerry同属于一个package--Partners //Tom.javapackage Partners;pu

Print2Flash出现&amp;quot;System Error. Code:1722. RPC服务器不可用.&amp;quot;错误解决办法

Print2Flash出现"System Error. Code:1722. RPC服务器不可用."错误. 一般来说这个应该是某个Windows服务没有打开所导致的问题.后来才发现:原来是Print Spooler这个服务没有启动,只要启动这个服务就可以了,启动的时候就不会报错了.

Win7提示&amp;quot;显示器驱动已停止响应并且已恢复&amp;quot;

  "显示器驱动已停止响应,并且已恢复",这个故障,我相信绝大多数用win7的朋友都遇到过,让我们一步一步来解决这个故障: 工具/原料windows 7 系统电脑 步骤/方法故障产生的原因:win7下当开启显示效果为"玻璃效果"和"启用桌面组合"后,显卡工作在2D.3D分频切换状态,桌面采用2D显示频率,而"玻璃效果"等特效会采用3D显示分频效果,如果的显卡不是很好(特别是集成及低端显卡),当用户频繁切换显示效果,这些操作都在

协议格式-这些协议的格式&amp;amp;quot;帧头,功能号,结束符&amp;amp;quot;根据什么而来?

问题描述 这些协议的格式"帧头,功能号,结束符"根据什么而来? 本人小白,不懂一些协议格式,比如,帧头0x15功能号0x01结束符0x0A,这些根据什么依据而来,如果我要修改格式,应该根据哪块部分来修改求各位大神赐教,尽量说的通俗明白一点, 解决方案 这都是人定的,发送方和接收方定好通讯协议 解决方案二: ppp协议帧格式UDP协议格式

jsp,Runtime.getRuntime().exec(&amp;amp;quot;sudo ifconfig eth0 192.168.1.103&amp;amp;quot;)出错

问题描述 各位大侠,救命LINUXUBANTU环境下,java语句Runtime.getRuntime().exec("sudoifconfigeth0192.168.1.103")时,系统会在linux终端提示输入密码,可输入密码还是不行.于是就是修改了/etc/sudoers文件,这样直接在linux终端sudoifconfigeth0192.168.1.103时,可以成功修改系统的IP地址,并且不用再输入密码.可是用java语句Runtime.getRuntime().exec(

showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框&amp;amp;quot;请重新发送消息,无法刷新网页&amp;amp;quot;

问题描述 showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框"请重新发送消息,无法刷新网页"在网上找了N种办法,就是没用,真伤脑筋.请教哪位大侠指教,项目好赶,如果问题解决马上给分. 解决方案 解决方案二:你是怎么刷的父页?是在父页用location.reload()刷吗?如果是这样的话,注意看一下子窗口的<head><Basetarget="_self"/>解决方案三:我里面已经写了<Basetarget=&

服务器-元素类型为 &amp;amp;quot;typeAliases&amp;amp;quot; 的内容不完整, 它必须匹配 &amp;amp;quot;(typeAlias)+

问题描述 元素类型为 "typeAliases" 的内容不完整, 它必须匹配 "(typeAlias)+ 从snv服务器上面检出项目,然后我把自己本地的index的jsp页面和css,js,image,复制进去,结果一直报404