String 源码解析

  1. // String是引用类型,比较时不能比较引用是否相等,而是比较字符串的内容是否相等
  2. public boolean equals(Object anObject) {
  3. if (this == anObject) {
  4. return true;
  5. }
  6. if (anObject instanceof String) {
  7. String anotherString = (String)anObject;
  8. int n = value.length;
  9. if (n == anotherString.value.length) {
  10. char v1[] = value;
  11. char v2[] = anotherString.value;
  12. int i = 0;
  13. while (n-- != 0) {
  14. if (v1[i] != v2[i])
  15. return false;
  16. i++;
  17. }
  18. return true;
  19. }
  20. }
  21. return false;
  22. }
  23. //一般重写equals 方法先写引用是否相等,再判断对象是不是instance of 某个object,再判断某个具体的key是不是相等