转载:https://blog.csdn.net/qq_25827845/article/details/53868815

1.String源码中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;
}

2. 模仿String equals源码

package cn.ywq.test;

class MyString {

    char[] value;
public MyString(char[] value) {
this.value=value; //通过构造方法将字符传入
} public int equalsString(Object obj) {
if(this==obj){
return 0;
} //若该对象是MyString类型的
if(obj instanceof MyString){
MyString string =(MyString) obj;
int n=this.value.length;
if (n>string.value.length) { //先判断长度的关系
return 1;
}else if(n<string.value.length){
return -1;
}else{ //若长度相等
char v1[] = this.value;
char v2[] = string.value;
int i = 0;
while (n-- != 0) { //按照数组的每一位进行比较
if (v1[i] > v2[i]){
return 1;
}else if(v1[i] < v2[i]){
return -1;
} i++;
}
return 0; //若while循环正常结束,则说明相等,返回0 }
}
return -100; //若传入的不是MyString类型的对象 } }
package cn.ywq.test; public class Test { public static void main(String[] args) { char[] value={'a','b','c','d'};
// char[] value2={'a','b','c','d','e'};
// char[] value3={'c','b','c','d'};
char[] value4={'a','b','c',}; MyString myString = new MyString(value);
MyString s=new MyString(value4);
int i = myString.equalsString(s);
System.out.println(i);
} }

最新文章

  1. 支付宝PC即时到账和手机网站支付同步
  2. Android开发——搭建最新版本的Android开发环境
  3. OpenCV2+入门系列(三):遍历图像的几种方法
  4. [转]MVC自定义数据验证(两个时间的比较)
  5. PHP正则匹配title标题文本
  6. 自己实现的库函数2(memset,memcmp,memcpy,memmove)
  7. php提取身份证号码中的生日日期以及验证是否为未成年人的函数
  8. python--socket/Socketerver并发/udp
  9. Vue实践经验
  10. python登录网页版微信发送消息
  11. centos7进单用户
  12. 中文汉字和常见英文数字等的unicode编码范围
  13. web基础之http
  14. WIndows下使用Grafana+InfluxDB打造监控系统
  15. GNU/Linux的GNU是什么意思
  16. Window和document的区别
  17. [UE4]GameMode、GameInstance、GameState、PlayerState、PlayerController
  18. node-lessons
  19. Leetcode(力扣) 整数反转
  20. mongodb lock 出毛病时解决方法

热门文章

  1. 基于光盘配置yum源
  2. Node.js_1.1
  3. 数据库中间件DBLE学习(一) 基础介绍和快速搭建
  4. STM32CubeMX自建MDK工程的基本步骤
  5. js面向对象怎么理解
  6. svn提交更新代码提示Please execute the &#39;Cleanup&#39; command 的解决办法
  7. mybatis - 基于拦截器修改执行语句中的ResultMap映射关系
  8. 虚拟化技术xen的简介和安装
  9. canvas特效-文字粒子
  10. 栈和队列----最大值减去最小值小于等于num的子数组的数量