Java-equals比较方法(Java StringEquals)

    xiaoxiao2022-07-14  163

    //package Main; /** * @time:2019/04/14 * @role:东方神祇(杨) * 在我们平时需要对某两个数据进行比较是否相同的时候 * 往往是采用 “==” 运算符来进行的; * 而这种比较方法一般是对数值类型进行比较,也非常都有效好用; * 但是如果用于字符串的比较有时候就不是那么如意, * 因为 “==” 比较原理是对其内存地址的比较,而字符串则存在 * 实例化对象字符串和普通字符串,而数值型则不行 * 例如:String str = "yangmufahaoshuai" ; * String str1 = new String("yangmufahaoshuai") ; * 此时通过直接赋值的 “str” 字符串变量 和 通过new实例化对象方式赋值的 “str1” 字符串变量, * 他们俩的内存存放位置明显不一样如果使用 “==” 运算符以内存地址方式相比显然不可能相等, * 而int等数值类型不能像String类型这样通过new来进行赋值; * 例如:int a=9 ; * int a1 = new int(5) ; * 此时是语法错误的,所以只能通过 “==” 来进行比较和赋值操作‘ * 既然如此那么对于String类型得比较问题,则采用内部提供的 “ eauals() ” 方法,就得已解决; * 此方法其原理是对其内容的比较而并非内存地址,详情如下: */ public class StringEquals { public static void main(String args[]){ String info = "yangmufa" ; String info1 = info+"haoshuai" ; // 此时为运行时常量池 String str = "yangmufahaoshuai" ; String str1 = new String("yangmufahaoshuai") ; String str2 = new String("yangmufahaoshuai").intern() ; System.out.println(str.equals(str1)) ; // True System.out.println(str==str1) ; //False System.out.println(str==str2) ; //True 2采用intern方法自动入池而直接赋值也是在入池 System.out.println(str==info1); // 此时为静态池与运行时常量池的地址比较 //int a=9 ; //int a1 = new int(5) ; String a ="yyy" ; String b= null ; // System.out.println(b.equals(a)); //NullPointerException //equals带有判断null的功能,所以只要将字符串常量写在前面就不会出现NullPointerException System.out.println("yyy".equals(b)) ; //false System.out.println("yyy".equals(a)) ; //true } } /** * 注:jdk1.8及以前对于String其底层是采用char数组进行包装 * 而 在jdk1.9及以后则改为byte */

    /*--------------------- 作者:灭世奶神 本文链接:https://blog.csdn.net/qq_36823679/article/details/90489400

    版权声明:       本文为博主原创文章,转载请附上源文链接!

     如果觉得我的论文对您有用,您的请评论点赞与  合理优质的转发也将是鼓励支持我继续创作的动力! ---------------------*/

    最新回复(0)