Java-equals比较方法(Java StringEquals)

//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
 */

/*-------------------反爬声明o()咻咻咻--------------------
 

作者:**杨木发** 版权声明: 本文为博主倾情原创文章,整篇转载请附上源文链接!

如果觉得本文对你有所收获,你的请评论点赞 与

合理优质的转发也将是鼓励支持我继续创作的动力,

更多精彩可百度搜索 杨木发 或:

个人网站:杨木发的自留地 - 此地无银三百两

GitHub:https://github.com/yangmufa

坚持创作 善于总结 开源共享 高质进步。

-------------------反爬声明o()咻咻咻--------------------*/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YangMufa(编程小马达)

你的鼓励将是我创作的最大动力o

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值