• java中字符串相等判断


    字符串的判断有2种:

            1、判断地址是否相等  用:==

            2、判断值是否相等  用:equals方法

    Object类作为所有类的超类,而Object类的equals方法是直接比较地址的,源码如下:

    public boolean equals(Object obj)  
       {  
           return this == obj;  
       }

    所以,在String类中的equals方法,是重写了Object类的equals方法的,String类的equals方法源码如下:

    public boolean equals(Object anObject){
    
        if(this==anObject){        //比较地址,如果地址相等,直接返回true
    
            return true;
    
        }
    
        if(anObject instanceof String){        //如果地址不相等,那就比较类型,如果类型不相等,直接返回false
    
            String anotherString =(String)anObject;    //由于是String类的比较,所以要把对象强转为String类
    
            int n=value.length;        //记录当前对象的字符长度
    
            if(n==anotherString.value.length){    //判断当前对象的字符串长度和传入的字符串长度是否一样,不一样,直接返回false,如果一样,接着往下比较
    
                char v1[]=value;    
    
                char v2[]=anotherString .value;
    
                int i=0;
    
                while(n-- !=0){        //将2个字符数组的循环对比
    
                    if(v1[i] !=v2[i])    //将字符数组的字符进行对比
    
                        return false;    //如果出现一个字符不同,马上返回false
    
                    i++
    
                }
    
                return true;
    
            }
    
        }
        
    
        return false;
    
    }

    String类的equals比较内容相同思路如下:

      1、先判断地址是否相等,相等返回true

      2、比较类型是否一样,不一样,返回false

      3、将传入的对象强转为String,比较长度,长度不相等,返回false

      4、长度相等,循环比较字符数组的元素,当有一元素比较内容不相同,马上返回false

      5、2个字符数组循环比较所有元素,没有内容不相同的元素,返回true

    测试代码如下:

    public class TestString {
        public static void main(String[] args) {
            String str="abc";
            String str2=new String("abc");   
            System.out.println("两个对象的内存地址是否相等:"+(str==str2));//false
            /**比较对应位置上的字符是否相等,如果所有的对象位置上的字符均相等,true,否则返回false*/
            System.out.println("两个对象的内容是否相等:"+(str.equals(str2)));
            
            
            //以下结果为 false  
            /**因为Person对象 instanceof String  的结果为false ,直接返回false*/
            System.out.println("String对象与Person对象的内容是否相等:"+(str.equals(new Person())));
        }
    }
    class Person{
        
    }

    水平有限,还请多多指教!

    内容
  • 相关阅读:
    angularJS(5)
    angularJS(4)
    angularJS(3)
    AngularJS(1)
    angularJS(2)
    关于响应式布局
    PHP+JQUEY+AJAX实现分页【转】
    bootscript/javascript组件
    你必须收藏的Github技巧
    关于php的一些小知识!
  • 原文地址:https://www.cnblogs.com/eyjdbk/p/10997943.html
Copyright © 2020-2023  润新知