Java之equals和==区别
equals和==是Java中用到频率很高的,虽然不少开发者使用第三方的JAR包如hutool中的StrUtil.isEmptyIfStr(Object obj)这个方法中源代码就是==, public static boolean isEmptyIfStr(Object obj) { if (null == obj) { return true; } else if (obj instanceof CharSequence) { return 0 == ((CharSequence) obj).length(); } false; } 再比如我再这篇文章SpringCloud之Security中的自定义登录验证就用到equals和==。 可以说不论过去还是现在,我所开发的Java系统都涉及到这两个(凡是牵涉到判断的地方基本都这么用,不排除不少公司用第三方API封装好的,但本质上都是这些的封装和判断)。 虽然在用但对其也不是非常了解,所以有必要深入。 1.先说说equals和==的区别(1)对于== (2)对于equals方法, 2.以String源代码equals为例public boolean equals(Object anObject) { this == anObject) { ; } (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-- != ) { if (v1[i] != v2[i]) ; i++; } ; } } ; } 这段代码可以这么理解: 来个例子,如下: String s1 = "blog"; String s2 = new String(); System.out.println(s1 == s2);//输出结果为false System.out.println(s1.equals(s2)); 输出结果为true ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |