Integer number2 = new Integer(1);
    if (number2 == 1) {
      System.out.println("Number2 等于  1");
    } else {
      System.out.println("Number2 不等于  1");
    }
   
    String str = new String("java2000");
    if (str == "java2000") {
      System.out.println("str2 等于 java2000");
    } else {
      System.out.println("str2 不等于 java2000");
    }Integer number2 = new Integer(1);
为什么新建一个Interger的类的对象number2与1用==比较为真呢
number2在stack上,1在堆上。
number2代表什么
 String str = new String("java2000");
str又代表什么

解决方案 »

  1.   

    if (number2 == 1) 从jdk5.0开始自动打包和解包机制 这里会将number2解包成int值String str = new String("java2000"); 创建了2个Sting对象一个在堆一个在池
      

  2.   

    Integer是int的包装类型啊,当然可以与number2比较
    number2代表一个Integer类型的变量,并赋值为1
    str代表字符串变量,并赋值为java2000
      

  3.   

    number2 == 1
    判断的时候number2会 autounboxing ,得到数字 1进行比较 .
      

  4.   

    这是两个不同的概念,lz应该先弄清楚
    Integer number2 = new Integer(1);

    String str = new String("java2000");
    这两个是不同的,一个是int的封装数据类型,而String与Integer是不一样,
    lz有时间可以去看看java编程思想,这样对你有很大的帮助....