equals与==区别

==可以用于基本类型之间的比较也可以用于引用类型的比较
为什么是true
String ss= "aaa"
//创建出来的对象放在一个特殊的地方,字符串常量池,池机制 共同指向了同一个对象“中国红”
??????????
在池中一旦创建对象,第二次再创建一模一样的时候,认为已经创建了,在栈当中两个引用值指向了一个共同对象;


String s = new String("中国");
String s2 = new String("中国");
System.out.pritnln(s==s2);返回false
??????????
创建在堆中,内存都会分配空间,相当于创建了两个;

equals
比较的是对象的内容: ==比较的是内容和地址;

String s = new String("abc");
创建了两个对象

String s = new String("abc");  //创建了两个对象,一个在堆中,一个在串池中
String t = new String("abc");
String k = "abc";        //一个在字符串池里
System.out.println(s==t)//false
System.out.println(k=="abc')//true都是在串池当中


String s2 = "ab" + "c"; //在内存中创建了几个对象  ab 、c、abc 不建议使用浪费内存;都在串池里面
String s3 = "abc";
System.out.println(s2==s3);//true此时s2和s3共同指向了一个对象
System.out.println(s==s2)//false一个创建堆里一个创建串池;
System.out.println(s3.equals(s2));//true

自己写一个类
A3  a = new A3();
A3  b = new A3();
System.out.println(a==b);//true?????
System.out.println(a.equals(b))//true?????????
如何重写equals方法,如何重写hachcode???



String类型
System.identityHashCode(String名字)System是位于System类里面,调用的时候方法不会被重写。所以会产生实际哈希码;System.identityHashCode产生的是伪地址;






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值