class er{
 public static void main(String arg[]){
  Byte b1=new Byte("127");
  if(b1.toString()==b1.toString())
  System.out.println("true");
  else
  System.out.println("false");
  
 }
}

解决方案 »

  1.   

    应该这样:
    ===
    class er{
     public static void main(String arg[]){
      Byte b1=new Byte("127");
      if(b1.toString().equals(b1.toString()))
      System.out.println("true");
      else
      System.out.println("false");
      
     }
    }
      

  2.   

    返回了两个指向String类型的引用,而着两个引用是不同的。。
      

  3.   

    每一次调用.toString,都会生成一个新的对象的。
    ——如果让你来实现Byte.toString,你也只能这样做,否则的话,Byte类就需要一个填加一个静态的成员来记住它上次产生的那个String,下次用的时候看看是不是一样,而且还无法做到线程安全,总之乱套了。
      

  4.   

    ==比较是基本类型的
    对象的比较用到。equals方法比较是对像所指向的值
    对象之间用==比较那是比较地址
      

  5.   

    你在做比较的时候,应该分清楚要比较的是什么。对象与对象之间用==是比较两个对象是否引用自同一个对象(即指向同一块内存地址),用.equals是比较两个对象的值是否相同。
    b1.toString()==b1.toString()你的这个语句其实生成了两个对象实例,在内存中有两块内存地址存放这两个对象实例,所以它一定是false了。
      

  6.   

    :)
    if(b1.toString().intern()==b1.toString().intern())
      

  7.   

    生成了2个对象,所以不相等
    class er{
     public static void main(String arg[]){
      Byte b1=new Byte("127");
      String str1=b1.toString();
      String str2=b1.toString();
      if(str1==str2)
      System.out.println("true");
      else
      System.out.println("false");
      
     }
    }
      

  8.   

    ==比较是基本类型的
    对象的比较用到。equals方法比较是对像所指向的值
    对象之间用==比较那是比较地址
    ===================================================
    同意~~~~~~,虽然在Object中equal是用来比较两个对象指向的地址,但是在其子类中基本全部重写来用equal比较两个对象的内容。
      

  9.   

    toString返回了2个string对象,==是比较引用,而不是比较内容。虽然2个toString返回的对象的内容是一样的,但是因为是不同的对象,引用也不同