equals 和 == 的区别 (全面)

大侠的总结:

   http://hi.baidu.com/kabian/blog/item/5c55863c9f77883670cf6cab.html

 

 

 

自己的总结

 

/*
equals 和 == 的区别
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。也可以理解是比较字符串是否相等。
==用于比较引用(就是比较的内存地址的值是否相等)和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
*/


public class TSt{
      public static void main(String[]  args){

        String  s1=new String("jack");//开辟了2个空间,因为"jack"字符串开辟一个,new又开辟一个空间(这里的值是引用"jack"开辟空间里面的值),由new开辟的空间返回
        String  s2=new String("jack");//同理2个
        String  s3=s1;               
        String  s4="jack";//开辟了一个空间
        String  s5="jack";//同理一个
     //true
       System.out.println(s1.equals(s2));//为true,因为equals比较的是对象的内容

     //false
        System.out.println(s1==s2);  //为false,因为==比较的是在堆里面的位置,因为开辟了4个空间,所以为false。

     //true
         System.out.println(s1==s3);//为true,因为s1开辟的空间也把线引向了s3,所以用的都是s1开辟的空间,结果为true。

     //true
         System.out.println(s1.equals(s3)); //只要s1==s3相等,那么s1.equals(s3)必然相等。

     //true
           System.out.println(s4.equals(s5));//因为String也是个类,所以s4,s5都开辟了新的空间(这样理解是不对的,这里用到了java的一种设计模式,叫做共享模式,

只要s4开辟了空间,s5就会享用s4开辟的空间),既然都用一个空间了,所以答案为true。
     
  
     //true
           System.out.println(s4==s5);//解释同上。

     //true
         System.out.println(s1.equals(s4));//s1与s4的内容都是jack,所以答案为true。

     //false
         System.out.println(s1==s4);//这里s1开辟的两个空间是不会分给一个给s4共享的,所以答案为false。
     }

  }
*************************************************************************************下面是String类的一些特性
1、String类中的内容一旦声明则不可改变例子如下:
   public clss Test{
    public static void main(String[] args){
          String s1="jack";
          fun(s1)
          System.out.println(s1);  //答案为jack
  }
    public static void fun(String s2){
          s2="lucy";       
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值