zoukankan      html  css  js  c++  java
  • ==和equals区别

    区别

    先说==

    如果是基本类型,那就比较值
    如果引用,比较内存地址

    那equals()呢?

    这是Object的方法,默认比较也是地址,因为这个方法的最初定义在Object上,默认的实现就是比较地址

    自定义的类,如果需要比较的是内容,那么就要学String,重写equals方法

    看一个案例

    String s1 = new String("zs");
    String s2 = new String("zs");
    System.out.println(s1 == s2);  //false
    ==比较的是引用地址值,2次new,所以地址必然不一样,new指向的是堆的地址
    
    
    
    String s3 = "zs";
    String s4 = "zs";
    System.out.println(s3 == s4);  // true
    因为此时都是引用的常量池
    
    
    
    System.out.println(s3 == s1);  // false
    肯定false,一个是new,一个是常量池
    
    
    
    String s5 = "zszs";
    String s6 = s3+s4;
    System.out.println(s5 == s6);  //false
    s5是常量池地址
    字符串不可变,s3+s4相加,会通过new创建新对象。
    
    
    
    
    final String s7 = "zs";
    final String s8 = "zs";
    String s9 = s7+s8;
    System.out.println(s5 == s9);  //true
    加final是个常量
    
    
    
    final String s10 = s3+s4;
    System.out.println(s5 == s10);  //false
    
  • 相关阅读:
    python基础总结二
    HTTP和HTTPS的区别
    通过HTTP请求响应过程了解HTTP协议
    稳定性测试+易用性测试
    容错测试点
    功能测试思考点
    功能测试-UI测试思考点
    字符编码-11
    字典+再识函数-8
    web API的概念
  • 原文地址:https://www.cnblogs.com/hellosiyu/p/13735233.html
Copyright © 2011-2022 走看看