public class ts {
static boolean isNum1(String s){
if(s=="1")
return true;
return false;
}

public static void main(String args[]){
String str="123";
for(int i=0;i<str.length();i++){
String s=String.valueOf(str.charAt(i));
System.out.println(isNum1(s));
}
}
}我在项目中一直会认为输出结果为   对错错,所以搞了半天没发现错误,
最后发现原来有上面这回事,输出结果为   错错错  ,与我的大脑分析是完全违背的,这种奇怪的事
怎么让我遇到了,如果哪位大哥或少数的小姐姐遇到这种问题,请告诉我下,最好能解释下。。
十分感谢

解决方案 »

  1.   

    你没有搞清楚equals和==的区别
    将==换成equals(“1”)
    就可以了。
      

  2.   

    对象要比较值是否相同的话,需要实现 equals 方法,并使用该方法进行比较!if(s=="1")  --->  if("1".equals(s))
      

  3.   

    字符串比较不要用==,api提供了现成的equals()方法
      

  4.   

    ==和equals()方法是不同的。要小心着用。你记住String 是引用类型就是了
      

  5.   

    if(s=="1")
    字符串用这种方法比较能成功的可能性很小
    s=="1"这种方式比较的是内存中的地址,很少有两个对象的地址会出现相等的情况
    如果用if("".equals(s))那么你的假设情况“对错错”会出现