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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不破大地 中级黑马   /  2013-6-3 16:35  /  1453 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
     }   
}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

5 个回复

正序浏览
简单的说就是 == 比较的是 2个对象的地址。
因此返回false
回复 使用道具 举报
比较字符串长度是否相同

⑴区分大小写比较:

A. equals(B)         

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

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



⑵不区分大小写

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

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


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





评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
第一:
    ==可以用于比较基本数据类型,也可以用于比较引用数据类型(也就是对象的引用);equals只能用于比较引用数据类型。这是因为它是一个方法,所以只能用于操作引用数据类型。
第二:
    ==用于比较基本数据类型时,比较的是数值。用于比较引用数据类型时,比较的是引用(也就是对象所在的地址)。equals用于比较引用数据类型时,默认的也是比较引用(这是因为Object中equals比较的是引用),除非两个比较的对象所在的类中覆盖了equals方法。比如在String中,因为String覆盖了equals方法,那么比较的就是字符串的内容,而不在是引用。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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就行了,楼主要多自己测试啊,多运行下看看状态就明白了)

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
“==”如果是基本数据类型比较的是值是否相等。引用数据类型比较的是引用地址。equals比较的是对象的内容是否相同。大写OVER停止要用equalsIgnorecase

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马