黑马程序员技术交流社区

标题: 为什么要用equals方法才能匹配到over做为结束标记。而用==... [打印本页]

作者: 混乱的世界    时间: 2015-4-23 21:29
标题: 为什么要用equals方法才能匹配到over做为结束标记。而用==...
本帖最后由 混乱的世界 于 2015-4-23 22:39 编辑
  1. import java.io.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 String str1="abc";
  7.                 String str2="abc";
  8.                 System.out.println(str1==str2);
  9.                 System.out.println(str1=="abc");
  10.                 System.out.println(str1.equals("abc"));
  11.                 BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
  12.                 String s=null;
  13.                 PrintWriter pw=new PrintWriter(System.out,true);
  14.                 while((s=bfr.readLine())!=null)
  15.                 {
  16.                         //为什么要用equals方法才能匹配到over做为结束标记。
  17.                         if(s=="over")
  18.                                 break;
  19.                         else
  20.                                 pw.println(s.toUpperCase());
  21.                 }
  22.                 bfr.close();
  23.                 pw.close();
  24.         }
  25. }
复制代码

作者: 混乱的世界    时间: 2015-4-23 21:41
求告知,两个String对象用==判断和equals方法判断到底有什么区别
作者: chenxin2015    时间: 2015-4-23 21:42
==比较是地址 equals比较是内容
作者: 混乱的世界    时间: 2015-4-23 21:45
chenxin2015 发表于 2015-4-23 21:42
==比较是地址 equals比较是内容

   public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
String中的equals同样用了对象直接的==来判断,
还有字符串不都是固定的么,每一个字符串在系统中的地址都是一定的,你看我上面的几个判断语句,
用==来判断两个字符串和equals效果是相同的
作者: duzhi409    时间: 2015-4-23 22:07
String类中==是比较指向的对象是否相同,也就是地址值
              equals比较的是字符串内容是否相同




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