目录
比较两个字符串的值 是否相同——equals
1.Java底层实现原理
2.equals 默认比较两个对象的内存地址是否相同
3.自己定义的对象 equals 比较对象的属性值是否相同的话 重写 父类中(object)equals
4.String 类中的 equals 重写 Object类中的 equals,比较两个字符串值是否相同
5.String 底层如何实现————底层就是基于 char[]数组实现
6.比较两个字符串 值 对应的 char[]数组 存放的元素是否都相同
package com.api.Demo07;
public class Test01 {
public static void main(String[] args) {
String str1 = "mayikt";
String str2 = "mayikt";
System.out.println(str1.equals(str2));
}
}
String类中的重写Object的equals()
// String类中的重写Object的equals()
public boolean equals(Object anObject) {
// 比较两个字符串的 对象引用地址 是否相同
if (this == anObject) {
return true;
}
// 判断比较的类型 是否 是为 String
if (anObject instanceof String) {
//将该类型 强转为 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中的equals()
package com.api.Demo07;
/**
* 手写String中的equals()
*/
public class Test02 {
public static void main(String[] args) {
/**
* 1.定义两个char 类型数组
*/
char[] str1 = {'m', 'a', 'y', 'i', 'k', 't'};
char[] str2 = {'m', 'a', 'y', 'i', 'k', '1'};
System.out.println(compare(str1, str2));
}
public static boolean compare(char[] str1, char[] str2) {
// 默认返回true
//2.比较两个char[]类型数组 长度是否相同
if (str1.length != str2.length) {
return false;
}
//3.获取到str1长度
int n = str1.length;
int i = 0;
while (n-- != 0) {
// 通过循环比较 连个 char[] 对应的 index 下标位置 元素是否相同
if (str1[i] != str2[i]) {
return false; //退出while()
}
i++;
}
// 如果两个char[]中的 元素值相同的话 直接返回true
return true;
}
}
下一篇文章:String遍历字符串原理