equals变量在前面和后面的区别
来源:互联网 发布:注册中文域名多少钱 编辑:程序博客网 时间:2024/06/07 18:15
equals变量在前面或者在后面有什么区别吗?这是一个坑点
我就不废话那么多,直接上代码:
package sf.com.mainTest;public class Test { public static void main(String[] args) { System.out.println(new Test().isBool(null)); } public boolean isBool(String a){ return a.equals("true");// return "null".equals(a); }}
如上述代码:a.equals("true");和"null".equals(a);有什么区别的?
答案:前者会抛空指针异常,后者不会;
剖析:如果a=null,String对象就会是一个空对象,空对象说明没有equals方法,所以就会报空指针异常;
又如,后者a=null,"null".equals(a);结果永远都为false,原因直接看源码:
public boolean equals(Object anObject) { if (this == anObject) { return true; }
//判断anObject是否为String类型 if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
为了避免这个坑点,还是使用另外一种方式吧!
使用org.apache.commons.lang包下的StringUtils.equals(String str1, String str2)方法
直接看源码:
public static boolean equals(String str1, String str2) { return str1 != null ? str1.equals(str2) : str2 == null; } //忽略大小写进行比较 public static boolean equalsIgnoreCase(String str1, String str2) { return str1 != null ? str1.equalsIgnoreCase(str2) : str2 == null; }
看到StringUtils.equals这个方法了吧。他已经帮你绕过了那个坑,我还是比较推荐大家多用用StringUtils工具类里面的方法,
毕竟是人家封装好的,可以直接拿来用,尽量少走弯路
阅读全文
0 0
- equals变量在前面和后面的区别
- equals变量在前面或者在后面有什么区别吗?
- 变量的比较,==和equals的区别
- equals方法变量和常量位置区别
- .equals(username) 和 username.equals("")的区别
- "".equals(str)和str.equals('"")的区别
- equals()和equalsIgnoreCase()的区别?
- equals和hashCode的区别
- equals和 hashcode的区别
- “=”和“equals()”的区别
- equals和hashcode的区别
- equals和equalsIgnoreCase的区别
- equals()和hashCode()的区别
- equals 和hashcode的区别
- equals和equalsIgnoreCase的区别
- hascode()和equals()的区别
- equals和equalsignorecase的区别
- equals()和equalsIgnoreCase()的区别
- 神经网络设计_学习规则总结
- window 下上传项目到git 和插件上传
- 手把手教你用Strace诊断问题
- hadoop环境变量配置及启动
- stanford Protege 4.3 ERROR: Bundle org.protege.common 解决方法
- equals变量在前面和后面的区别
- 如何查看MySQL的当前存储引擎?
- CDH5 部署步骤
- js 小数取整的函数
- sqlserver 视图模型 排序报错 无法绑定由多个部分组成的标识符
- 解题报告:HDU_6102 GCDispower (离线处理+莫比乌斯反演)
- ubuntu系统下安装python3
- Java中参数的传递
- 余弦相似度的计算——C++