A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-3 09:10  /  1533 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 2012-8-3 21:09 编辑


问题已经解决”。



部分代码如下:
String s1 ="abc";
String s2 = new String ("abc");
system.out.println(s1==s2);   //flase
system.out.println(s1.equals(s2));//ture
这个代码中,equals被复习了比较的是s1和s2中的内容,那==号比较的是什么啊,这个在API里面没有啊,那我怎么知道什么时候用==,什么时候用equals。
那如果没有被复习equals的对象,==还能用吗,这个是默认的吗?
谁能告诉==,和equals到底怎么用啊。

7 个回复

正序浏览
李志广 发表于 2012-8-3 11:21
这是一个比较常见的问题,又是大家都比较疑惑的地方,下面是小总结:
== 和equals()两种比较方法,在使用时 ...

很有帮助谢谢
回复 使用道具 举报
这个问题太多人问了。==比较的是内存应用地址。
而equals是利用类中的equals方法进行比较的。equals方法怎么写,就怎么比较。
回复 使用道具 举报
==是比较的在内存的地址,而equals只是简单地比较两者的内容是否相同。简单的说“=="只要指向的地址一样结果就是true,而equals其内容相同结果就是true。比如下面的代码:
String st1=new String("abc");
  String st2="abc";
  String st3=new String("efr");
  String st4="abc";
   System.out.println(st1==st2);//fasle 地址不同st1在对内存中,是引用对象;st2在栈内存中。
  System.out.println(st2.equals(st1));//true 内容相同。
  System.out.println(st1.getClass() == st2.getClass());//true 都是String类型的字节码。
  System.out.println(st1.getClass() == st3.getClass());//true 都是String类型的字节码。
System.out.println(st1.getClass().equals(st3.getClass()));//true 都是String类型的字节码。
  System.out.println(st2 == st4);//true 内容相同。
希望以上的代码能帮助你更好的理解两者之间的区别。
回复 使用道具 举报
这是一个比较常见的问题,又是大家都比较疑惑的地方,下面是小总结:
== 和equals()两种比较方法,在使用时要注意
(1)如果比较两个基本类型的数值是否相等,用“==”来比较
(2)如果要比较两个引用变量对象的值是否相等,则要用对象的equals()方法进行比较
(3)如果需要比较两个引用变量是否指向同一对象,则使用“==”来进行比较
(4)对于自定义的类,应该根据情况覆盖其父类或Object类中的equals()方法,否则默认的equals()方法功能与“==”相同。
呵呵,多看一下,毕老师讲解的有关这方面的视频,慢慢体会!!一定会有所收获的!!!!!!!
希望对你有所帮助!!!!{:soso_e100:}
回复 使用道具 举报
一楼说的对  ==比较的是引用地址   equals()比较的是内容   不过equals()还要看变量的类型  string类型以外的   equals()也只能当==用了
回复 使用道具 举报
强烈建议你 多看几遍  第13天01 String 概括     多看几遍就懂了
回复 使用道具 举报
本帖最后由 焦晨光 于 2012-8-3 09:20 编辑

==比较两个变量本身的值,即两个对象在内存中的地址。
比较的是两个引用变量是否指向同一个对象 及 比较的是指针(地址)
system.out.println(s1==s2);   //flase 两个变量的内存地址不一样,
                              //也就是说它们指向的对象不 一样故 false
equals 比较的是两个变量存储的实体 即 变量的实际值 是否相等
system.out.println(s1.equals(s2));//ture两个变量的所包含的内容是abc,故相等。

用哪个 就看你要比较的是两个变量的引用值还是两个变量的实际内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马