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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class ReadLine {
  2.      public static void main(String[] args) throws IOException {
  3.              System.out.print("请输入:");
  4.                 BufferedReader boy=new BufferedReader(new InputStreamReader(System.in));
  5.                 String str = boy.readLine();               
  6.                 System.out.println("abcd"==str);
  7.         }
  8. }
复制代码
为什么显示不相等呢?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
String str = boy.readLine();   
boy.readLine()返回一个String字符串对象,在堆中创建
"abcd"是一个字符串常量,在“常量池”中创建
"abcd"==str比较的不是同一个数据
如果要判断相等,用str的equals方法str.equals("abcd")就可以

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
  1. public class ReadLine {
  2.      public static void main(String[] args) throws IOException {
  3.              System.out.print("请输入:");
  4.                 BufferedReader boy=new BufferedReader(new InputStreamReader(System.in));
  5.                 String str = boy.readLine();               
  6.                 System.out.println("abcd"==str);
  7.         }
  8. }
复制代码
为什么显示不相等呢?
因为==是比较的地址,他们俩的地址肯定不同,
你在这里应该用equals来比较

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
import java.io.*;
public class ReadLine {
     public static void main(String[] args) throws IOException {
             System.out.print("请输入:");
                BufferedReader boy=new BufferedReader(new InputStreamReader(System.in));
                String str = boy.readLine();               
                System.out.println(str.equals("abcd"));//这里使用equals方法
        }
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
栗培文 发表于 2012-5-23 19:57
String str = boy.readLine();   
boy.readLine()返回一个String字符串对象,在堆中创建
"abcd"是一个字 ...

嗯嗯。谢谢哦
回复 使用道具 举报
贾旭 发表于 2012-5-24 09:31
嗯嗯。谢谢哦

不客气不客气
回复 使用道具 举报
==是用来比较两个字符串地址的,他们的地址是不同的如果要比较内容应该用equals方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马