String的equals方法和contentEquals方法的比较
来源:互联网 发布:禁止上网软件 编辑:程序博客网 时间:2024/06/05 05:07
boolean equals(Object anObject);
boolean contentEquals(CharSequence cs);
这两个方法都可以用来比较String对象内容序列的异同,但也存在差异。
最大的差别就是String的equals方法只有在另一个对象是String的情况下才可能返回true,
而contentEquals只要求另一个对象是CharSequence或其子类的对象
测试代码如下:
/** * String的equals方法和contentEquals方法的比较 * @author FREEDOM * */public class StringTest {public static void main(String[] args) {String s1="123";String s2=new String("123");StringBuilder sb=new StringBuilder("123");System.out.println(s1.equals(s2));//trueSystem.out.println(s1.contentEquals(s2));//trueSystem.out.println(s1.equals(sb));//falseSystem.out.println(s1.contentEquals(sb));//true}}具体原因可以参考equals方法和contentEquals方法的源码:
//来自String源码 public boolean equals(Object anObject) { if (this == anObject) { return true; } 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; } //来自String源码 public boolean contentEquals(CharSequence cs) { // Argument is a StringBuffer, StringBuilder if (cs instanceof AbstractStringBuilder) { if (cs instanceof StringBuffer) { synchronized(cs) { return nonSyncContentEquals((AbstractStringBuilder)cs); } } else { return nonSyncContentEquals((AbstractStringBuilder)cs); } } // Argument is a String if (cs instanceof String) { return equals(cs); } // Argument is a generic CharSequence char v1[] = value; int n = v1.length; if (n != cs.length()) { return false; } for (int i = 0; i < n; i++) { if (v1[i] != cs.charAt(i)) { return false; } } return true; }}
2 0
- String的equals方法和contentEquals方法的比较
- String和StringBuffer的equals方法比较
- String的 == 和 equals方法的比较
- java的String的equals方法和"=="比较
- String类的equals方法和==方法的比较
- String类的equals方法和==方法的比较 ..
- bigDecimal的比较方法 equals和compareTo
- equals()方法和==的比较
- [Java]hashCode和equals方法的比较
- equals方法和==的比较
- String 的==和equals()方法
- Java Object类中equals()方法与String类中equals()方法的比较
- String使用equals方法和==分别比较的是什么?(转)
- Java中的String类以及 == 和equals()方法的比较!
- String使用equals方法和==分别比较的是什么?(转)
- String使用equals方法和==分别比较的区别
- String使用equals方法和==分别比较的是什么?
- (Java)String使用equals方法和==分别比较的是什么?
- CocoaPods
- 蓝桥杯历届-埃及分数
- LeetCode 037 Sudoku Solver
- ActiveMQ 实现负载均衡+高可用部署方案
- Centos 7 相关操作与配置
- String的equals方法和contentEquals方法的比较
- SQL SERVER 数学函数
- 利用反射机制编写一个程序,这个程序能把类中所有的成员变量赋值,并把操作信息输出到控制台。
- Android studio 使用JitPack发布library到Github开源库
- 使用PR_GET_NO_NEW_PRIVS 避免安全漏洞
- Android Studio Failed to complete Gradle execution
- Time类中的运算符重载(3)-前置++,后置++
- Linux下计划任务 crontab
- Java用SAX和DOM解析器解析Xml