首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为什么是false?该怎么处理

2012-01-06 
为什么是false?classer{publicstaticvoidmain(Stringarg[]){Byteb1newByte( 127 )if(b1.toString()b

为什么是false?
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 ");
   
  }
}


[解决办法]
应该这样:
===
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 ");

}
}

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

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

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


if(b1.toString().intern()==b1.toString().intern())
[解决办法]
比较STRING应该用EQUALS
[解决办法]
生成了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 ");

}
}

[解决办法]
==比较是基本类型的
对象的比较用到。equals方法比较是对像所指向的值
对象之间用==比较那是比较地址
===================================================
同意~~~~~~,虽然在Object中equal是用来比较两个对象指向的地址,但是在其子类中基本全部重写来用equal比较两个对象的内容。
[解决办法]
toString返回了2个string对象,==是比较引用,而不是比较内容。虽然2个toString返回的对象的内容是一样的,但是因为是不同的对象,引用也不同

热点排行
Bad Request.