zoukankan      html  css  js  c++  java
  • String类中的equals方法总结(转载)

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

    1.String源码中equals大致写法:

     1 public boolean equals(Object anObject) {
     2 if (this == anObject) {
     3 return true;
     4 }
     5 if (anObject instanceof String) {
     6 String anotherString = (String) anObject;
     7 int n = value.length;
     8 if (n == anotherString.value.length) {
     9 char v1[] = value;
    10 char v2[] = anotherString.value;
    11 int i = 0;
    12 while (n-- != 0) {
    13 if (v1[i] != v2[i])
    14 return false;
    15 i++;
    16 }
    17 return true;
    18 }
    19 }
    20 return false;
    21 }

    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);
        }
     
    }
  • 相关阅读:
    复用$.ajax方式传递参数错误处理
    JS传递函数并且调用
    JQuery $.axaj的基本格式
    AOP的具体实践-简化结果返回的处理
    将Python打包成可执行文件exe的心路历程
    通过Python实现一个文档的半自动录入工具
    我的第一次实习感悟
    docker nginx+php-fpm+mysql
    使用Harbor搭建docker私服
    python 验证码获取后处理降噪、灰度、保存
  • 原文地址:https://www.cnblogs.com/bbllw/p/10071950.html
Copyright © 2011-2022 走看看