import java.io.*;
public class TestOutput {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        while(str != null && str != "") {
            System.out.println(str);
            str = br.readLine();
        }
        br.close();
    }
}import java.io.*;
public class TestOutput {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        while(str != null && str.length() != 0) {
            System.out.println(str);
            str = br.readLine();
        }
        br.close();
    }
}
请问上面两段代码在输入回车时为什么是不一样的?str != "" 与 str.length() != 0难道不一样吗?我测试过输入回车是str的长度是0啊,而str = ""的长度就是为0啊。

解决方案 »

  1.   

    ==,!=是比较两对象内存地址是否相同,
    equals()才可以用来比较两个对象的字面值是否相同   
      

  2.   

    str != "") {改成
    !str.equals("")) {
      

  3.   


    两种意义。
    字符串是目标,不是基本型。==或者!=得比较是比较hashcode,不是比较里面的值。如果str不是null的话,
    !"".equals(str)和 str.length() != 0可以达到相同的效果。
      

  4.   

    String str1="";
    String str2="";
    String str3=new String("");
    System.out.println(str1==str2);  //true
    System.out.println(str1==str3); //false
    System.out.println(str1.equals(str3)); //true
    其他同楼上
      

  5.   

    ="",可以为空,而求length=0则对象一定要存在
      

  6.   

    str 用==明显不行。equals改用。
      

  7.   

    对象的==运算符比较的是地址,因此一般得用equals
      

  8.   

    是这样的,这个个很长见的问题。我们一般用equals比较多
      

  9.   

    if(!str.equals() || str.length()!=0)
      

  10.   

    改一下
    if(!str.equals("") || str.length()!=0)
      

  11.   

    ==    : 同一个对象, 引用相同。equal : 不局限与同一个对象
      

  12.   

    str.length()
    字符串有这个方法吗?  似乎是length似乎是字符串的字段来的,
    这个问题我困扰了好久,不知道对不对
      

  13.   

    你们没有看API文档的习惯吗,这些,在API里都有说明的
      

  14.   

    while(str != null && str.length() != 0) {
    还是这个比较常见。推荐!15楼的  if(!str.equals() || str.length()!=0)  写法恐怕要出异常吧!不要尝试
      

  15.   

    比较字符串内容的时候,还是要用.equals(),安全。
      

  16.   

    .........str都.length()方法了。。佩服的五体投地......