equals()与==的区别

总结
1、== 操作符比较的是操作符两端的操作数是否是同一个对象;
   另外 == 操作符两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。
2、String的equals()方法比较的是两个String对象的内容是否一样
3、== 比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为TRUE,如:
   int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),
   因为他们都指向地址为10的堆栈;如下题:
 String s= "hello";
 String t = "hello";
 char c[] = {'h','e','l','l','o'}
 Which return true?
 A. s.equals(t);
 B. t.equals(c);
 C. s==t;
 D. t.equals(new String("hello"));
 E. t==c.
 答案:(acd)
题目:哪些返回true。
这个在前面第10题的equals()方法和==操作符的讨论中论述过。
==操作符比较的是操作符两端的操作数是否是同一个对象,
而String的equals()方法比较的是两个String对象的内容是否一样,
其参数是一个String对象时才有可能返回true,其它对象都返回假。
需要指出的是由于s和t并非使用new创建的,他们指向内存池中的同一个字符串常量,
因此其地址实际上是相同的(这个可以从反编译一个简单的测试程序的结果得到,
限于篇幅不列出测试代码和反编译的分析),因此答案c也是正确的。
 int i = 10;
 long l = 10L;
 double d = 10.0;
 System.out.println(i==l);  =>true
 System.out.println(i==d);  =>true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值