黑马程序员技术交流社区

标题: 关于Integer的问题 [打印本页]

作者: 吴在强    时间: 2013-2-5 10:29
标题: 关于Integer的问题
本帖最后由 张向辉 于 2013-2-15 20:22 编辑

package cn.test.hello;
public class IntegerTest {
/**
  * @param args
  */
public static void main(String[] args) {
  GetInteger ger = GetInteger.getInstance();
  ger.integerTest();
}}
class GetInteger {
private GetInteger() {
}
private static GetInteger in = new GetInteger();
public static GetInteger getInstance() {
  return in;
}
public void integerTest() {
  Integer a = 130;
  Integer b = null, sum;
  for (int i = 100; i <= 140; i++) {
   b = i++;
   System.out.println("-------" + b);
  }
  if (a == b) {
   sum = a + b;
  }else{
   System.out.println("它们没有相等------------");
  }
}
}

按道理说它们不应该输出"它们没有相等",我检查了几篇,还是找不到问题,谁能告诉一下我!

作者: 陈科宇    时间: 2013-2-5 11:49
朋友,你要清楚,肯定是会输出“它们没有相等”的。a,b两个Integer变量,你对他们判定(a==b),它们肯定是不相同的。看来你还不太明白“==”的含义。只要两个变量指向同一个对象时,才返回true。而且你的代码有点乱。a=130,b=140,即使是int基本类型,也还是会输出“它们没有相等”。
作者: 陈科宇    时间: 2013-2-5 11:53
public class IntegerTest {
        /**
         * @param args
         */
        public static void main(String[] args) {
                Integer a = 130;
                Integer b = null, sum;
                for (int i = 100; i <= 131; i++) {//我把140改成了131,这样使b最后为130
                        b = i++;
                        System.out.println("-------" + b);
                }
                //正确地对Integer判等应该采用如下形式
                if (a.intValue() == b.intValue()) {
                        sum = a + b;
               
                } else {
                        System.out.println(b);
                        System.out.println("它们没有相等------------");
                }
        }
}




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