gpt4 book ai didi

java - 解释一下String类中重写的equal方法

转载 作者:行者123 更新时间:2023-12-01 18:00:55 24 4
gpt4 key购买 nike

在 String 类重写方法 equal 中使用 countvalueoffset。它们是什么,为什么我们不使用非常简单的计数,我们可以使用 length() 函数,值是数组,我们可以使用 toCharArray(); 和 for偏移量我们可以取length()-1。我尝试在 Java 文档中搜索这些关键字 count、value 和 offset,但没有找到......

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}

最佳答案

以下是定义:

value  -> array of char holding the chars present in the String
count -> number of chars in the String
offset -> offset of first character to be considered in the value array

例如,考虑数组

char[] chars = new char[]{'a', 'b', 'c', 'd', 'e'};
String str = new String(chars, 1, 2);
System.out.println(str); // Prints bc

char[] chars2 = new char[]{'b', 'c'};
String str2 = new String(chars2, 0, 2);
System.out.println(str2); // Prints bc

System.out.println(str.equals(str2)); // Prints true

您可以想象 String 的值为 ['a', 'b', 'c', 'd', 'e'] str['b', 'c'] 表示 String str2

这不是真的。两个字符串在内部都使用大小为 2 的字符数组,即数组 ['b', 'c']

但是当您请求子字符串时,它会创建一个新的字符串,具有相同的和不同的偏移<值计数

<小时/>

这里是对偏移计数的描述以及一些示例

command                             value           count  offset   toString
---------------------------------------------------------------------------
String str = new String("ABC"); ['A', 'B', 'C'] 3 0 ABC
str.substring(2); ['A', 'B', 'C'] 1 2 C
str.substring(1, 2); ['A', 'B', 'C'] 2 1 BC

关于java - 解释一下String类中重写的equal方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41000153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com