黑马程序员技术交流社区

标题: ==号与equals的疑惑 [打印本页]

作者: 不破大地    时间: 2013-6-3 16:35
标题: ==号与equals的疑惑
public class inputstreamreader
{
     public static void main(String[] args) throws IOException
     {
             InputStream in=System.in;
             
             InputStreamReader isr=new InputStreamReader(in);
             
             BufferedReader bufr=new BufferedReader (isr);
             String line=null;
             while((line=bufr.readLine())!=null)
             {
                     if("over".equals(line))  //(1)在该行中,为啥不能用if("over"==line)替换,发现用了==
                                                        //后不能停止。
                                     //(2)发现如果键入大写OVER后也不能停止,如何键入大写  
                                    //OVER也能使程序停止。
                                            break;
                     System.out.println(line.toUpperCase());
                     
               }
             bufr.close();
     }   
}
作者: ljh11849    时间: 2013-6-3 16:46
“==”如果是基本数据类型比较的是值是否相等。引用数据类型比较的是引用地址。equals比较的是对象的内容是否相同。大写OVER停止要用equalsIgnorecase
作者: youngster    时间: 2013-6-3 16:50
本帖最后由 youngster 于 2013-6-3 16:57 编辑

其实就相当于下边这两种情况
String s1 = "over"; 相当于"over "
String s2 = new String("over"); 相当于line,line是new了一个String的,再存入数据
如果拿这两个比==,是false。equals当然是true了,因为equals比较的是内容。
至于键入大写,直接将条件里的换成OVER就行了吧,
如果不行的话,就是windows键盘输入和java中大写字母的编码不一样
(我亲测了下,直接程序里改成OVER就行了,楼主要多自己测试啊,多运行下看看状态就明白了)

作者: 飞鸟青崖    时间: 2013-6-3 17:23
第一:
    ==可以用于比较基本数据类型,也可以用于比较引用数据类型(也就是对象的引用);equals只能用于比较引用数据类型。这是因为它是一个方法,所以只能用于操作引用数据类型。
第二:
    ==用于比较基本数据类型时,比较的是数值。用于比较引用数据类型时,比较的是引用(也就是对象所在的地址)。equals用于比较引用数据类型时,默认的也是比较引用(这是因为Object中equals比较的是引用),除非两个比较的对象所在的类中覆盖了equals方法。比如在String中,因为String覆盖了equals方法,那么比较的就是字符串的内容,而不在是引用。
作者: 杨兴庭    时间: 2013-6-3 17:54
比较字符串长度是否相同

⑴区分大小写比较:

A. equals(B)         

变量A与变量B中字符串是否相容

假如A中是java, B中是JAVA ,则A不等于B



⑵不区分大小写

A. equals(B)        变量A与变量B中字符串是否相容

假如A中是java, B中是JAVA ,则A等于B


""==""   比较的的是两个变量的数据类型和变量内存储的值是否相等,数据结构和变量内值同时满足时    A==B






作者: First    时间: 2013-6-3 18:49
简单的说就是 == 比较的是 2个对象的地址。
因此返回false




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