黑马程序员技术交流社区

标题: 关于String字符串详细阐述,给想了解的同学 [打印本页]

作者: 侯鹏成    时间: 2014-12-19 23:44
标题: 关于String字符串详细阐述,给想了解的同学
有两种方式可用于对象比较,分别是“==”和equals(),==用于比较两个对象的内存地址值是否相等,equals()方法用于比较两个对象的内容是否一致。
  1. class TestEquals
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str1=new String("java");
  6.                 String str2=new String("java");
  7.                 String str3=str2;
  8.                 if (str1==str2)
  9.                 {
  10.                         System.out.println("str1==str2");
  11.                 }
  12.                 else{
  13.                         System.out.println("str1!=str2");
  14.                 }
  15.                 if (str2==str3)
  16.                 {
  17.                         System.out.println("str2==str3");
  18.                 }
  19.                 else{
  20.                         System.out.println("str2!=str3");
  21.                 }
  22.         }
  23. }
复制代码
运行结果为s
[attach]61349[/attach]


str1!=str2是因为str1和str2都是用new关键字开辟的空间,所以他们单独占有自己的内存空间,从而str1!=str2,而str3和str2指向了同一个内存空间,所以相等。下面再来看equals(0的比较
  1. class TestEquals1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str1=new String("java");
  6.                 String str2=new String("java");
  7.                 String str3=str2;
  8.                 if (str1.equals(str2))
  9.                 {
  10.                         System.out.println("str1 equals str2");
  11.                 }
  12.                 else{
  13.                         System.out.println("str1 not equals str2");
  14.                 }
  15.                 if (str2.equals(str3))
  16.                 {
  17.                         System.out.println("str2 equals str3");
  18.                 }
  19.                 else{
  20.                         System.out.println("str2 not equals str3");
  21.                 }
  22.         }
  23. }
复制代码


由此可以看出两次比较都相同,所以可以知道equals是String类中的方法。所以equals是用来比较内容的而==用来比较内存地址值


作者: 侯鹏成    时间: 2014-12-19 23:47

第一个程序运行结刚才漏传:L

作者: 青衫禅客    时间: 2014-12-20 01:06
那是因为String类中equals是被重新覆写过的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2