黑马程序员技术交流社区

标题: readeLine()的“abcd"和''abcd”为什么不相等呢 [打印本页]

作者: 贾旭    时间: 2012-5-23 19:39
标题: readeLine()的“abcd"和''abcd”为什么不相等呢
  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. }
复制代码
为什么显示不相等呢?

作者: 小小企鹅    时间: 2012-5-23 19:57
String str = boy.readLine();   
boy.readLine()返回一个String字符串对象,在堆中创建
"abcd"是一个字符串常量,在“常量池”中创建
"abcd"==str比较的不是同一个数据
如果要判断相等,用str的equals方法str.equals("abcd")就可以


作者: 8161776    时间: 2012-5-23 20:25
  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来比较

作者: 信义明    时间: 2012-5-23 20:58
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方法
        }
}
作者: 贾旭    时间: 2012-5-24 09:31
栗培文 发表于 2012-5-23 19:57
String str = boy.readLine();   
boy.readLine()返回一个String字符串对象,在堆中创建
"abcd"是一个字 ...

嗯嗯。谢谢哦
作者: 小小企鹅    时间: 2012-5-24 09:52
贾旭 发表于 2012-5-24 09:31
嗯嗯。谢谢哦

不客气不客气
作者: 丰亚彬    时间: 2012-5-24 11:42
==是用来比较两个字符串地址的,他们的地址是不同的如果要比较内容应该用equals方法




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