java 和equals_java中的==和equals()

==和equals()都是比较相等的,那有什么区别和联系;

1:基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char

使用==比较基本数据类型时比较的是数值是不是相等;

例如:

1 packageequals;2

3 public classTest {4 public static voidmain(String[] args) {5 int a=3;6 int b=4;7 int c=3;8 b=c;9 System.out.println(a==c);10 System.out.println(a==b);11 }12 }

68538ec0328cc6eb3501b95f010852ba.png

因为基本数据类型是在栈中的,理解堆栈就好理解这个问题,具体参考我的另一篇博客》》》堆栈     http://www.cnblogs.com/GH0522/p/8193650.html

那么当比较两个对象的时候比较的是 对象在内存的位置

1 packageequals;2

3 public classTest2 {4

5 public static voidmain(String[] args) {6 //TODO Auto-generated method stub

7 Double d = new Double(12.2);8 Double d2 = new Double(12.2);9 System.out.println(d==d2);10

11 }12 }

9edeab4f01c5a2de282823d8ef830731.png

因为这两个对象在堆中都拥有一个不同的地址虽然里面放的数值是一样的;

JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。例如String重写的equals方法就是比较内存中存放的值。

1 packageequals;2

3 public classTest2 {4

5 public static voidmain(String[] args) {6 //TODO Auto-generated method stub

7 String a=new String("a");8 String b=new String("a");9 System.out.println(a==b);10 System.out.println(a.equals(b));11 }12 }

a6b2f1e6f1eeda5cfe6288f54054ed38.png

看其String类中被重写的equals

046deef7ac18f6fb195c14bd04444e7f.png

没被重写的Object中的equals则是实现自==

42c91e8614b8b674e49121dbf39287c7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值