==和equals的总结,防止遗忘

  1. 对于==:

    比较的是基本数据类型的话,就是比较的是两个变量的值。

    int num1 = 50;
    int num2 = 50;
    System.out.println(num1 == num2); //true

    比较的是引用类型的话,就是比较两个是否引用了同一个对象。

    String s1=new String("abc");   
    //在堆内存开辟一块空间存放"abc"这一字符串,并在栈内存开辟一块名为s1的空间指向"abc"

    String s2=new String("abc");
    //又在堆内存开辟一块空间存放"abc"这一字符串,又在栈内存开辟一块名为s2的空间指向"abc"这个对象,与s1的指向不同

    String s3="abc"; 
    //在常量池中找是否有"abc"这个字符串,如果没有就开辟一块,并在栈中开辟一块名为s3的空间指向"abc"

    String s4="abc"; 
    //在常量池中找是否有"abc"这个字符串,已经找到,直接指向s3这块空间

    System.out.println(s1==s2); //false
    System.out.println(s2==s3);//false
    System.out.println(s3==s4);//ftrue
  2. 对于equals:

    当没有重写object的equals方法时,即直接调用object.equals时,与==号比较引用类型一样,比较的是否为同一个对象

    Scanner sc1=new Scanner(System.in);
    Scanner sc2=new Scanner(System.in);
    Scanner sc=sc1;
    System.out.println(sc1.equals(sc2));//false
    System.out.println(sc1.equals(sc));//true


    当重写了equals方法的话,比较的是所指向对象的属性
    String s0=new String("abc");
    String s1="abc";  
    String s2="abc";
    String s3=new String("abc");

    System.out.println(s0.equals(s1));//true
    System.out.println(s1.equals(s2));//true
    System.out.println(s1.equals(s3));//true
    System.out.println(s0.equals(s3));//true


    以上都是自己敲代码总结的,如果有什么错误,希望前辈些指导一下。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值