private final char value[];
private int hash; // Default to 0 public String(String original) {
this.value = original.value;
this.hash = original.hash;
} public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
} String:
|--CompareTo
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2); //取较小长度的字符串作为比较长度
char v1[] = value;
char v2[] = anotherString.value; int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) { //逐个比较
return c1 - c2;
}
k++;
}
return len1 - len2;
} |--equals
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;
} |--hashCode public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value; for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
} //toString的经典实现
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]"; StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {//中间省略判断,提高效率
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}

最新文章

  1. C#线程入门---转载
  2. PHP之MVC项目实战(三)
  3. Windows下搭建IOS开发环境(一)
  4. 【.net】关于RegexOptions中的各个枚举值的含义
  5. Linq之select子句
  6. java中的排序
  7. IP处理函数inet_aton()和inet_ntoa(),inet_pton,inet_ntop
  8. asp.net gridview中增加单击单元格事件
  9. scala学习笔记——类和对象
  10. html 表格中文字的背景色
  11. java人员正确使用IDEA 的方式
  12. Redis在APP中的应用
  13. uboot引导linux内核过程详解【转】
  14. JavaScript继承总结
  15. 键盘keyCode值
  16. 更为复杂C程序的运行时结构
  17. 在终端中使用vim命令修改某些文件,会提示文件只读模式,可以执行以下命令强制写入
  18. 转载:Java Lock机制解读
  19. Netty使用(一)
  20. web前端面試題

热门文章

  1. 开始使用MarkDown写博客
  2. Android中的Activity相关知识总结
  3. SSM环境搭建(接口编程方式)
  4. 【WP 8.1开发】电子罗盘
  5. MyEclipse在搭建s2sh时 如何 uninstalled facet
  6. Linux的学习--使用PuTTY
  7. 学习RxJS: 导入
  8. 推荐20个很有帮助的 Web 前端开发教程
  9. JVM之类加载器中篇
  10. ASP.NET MVC必知必会知识点总结(二)