public class test7 {


public static void main(String args[]){
int c = 1;
int d = 1;
Integer r = new Integer(1);
Integer o = new Integer(1);
//System.out.println(a.equals(b));
    //System.out.println(a == b);
    //System.out.println(a = b);
    System.out.println("1".equals(String.valueOf(c)));false
System.out.println(r == o);// true
System.out.println(r.equals(o));// true
System.out.println(r == c);// true
System.out.println(r.equals(Integer.parseInt("1")));// true
System.out.println(r.equals(1));// true
System.out.println(r == 1);true
}


}
为什么????

解决方案 »

  1.   

    我也想问LZ为什么,不要在这误导人好不好?
    System.out.println("1".equals(String.valueOf(c)));为什么是false?
    System.out.println(r == o);为什么是true?
      

  2.   

    LZ莫非想叫人解释 r==1?楼下的回答下
      

  3.   

    楼主 System.out.println(r == c);这句话没错没?
    一个是Object,int是原始类型,两个怎么可能相等呢
      

  4.   

    这是jdk1.5后出现的自动包装与自动解包,是为了方便基本数据类型和他们对应的包装类型的自动转换。
    这里的装箱应该理解为 封装对象 ,即把基础数据类型(如 int)转换成基础类型封装类的对象(如 new Integer())
    拆箱就是装箱的反过程,即把基础类型封装类的对象(如 new Integer())转换为基础数据类型(如 int)。装箱: Integer a = new Integer() ;
                  a = 100 ; //1.5以前不支持为对象如此赋值
    拆箱: int b = new Integer(100) ;
      

  5.   

    public class test7 {
        
        
        public static void main(String args[]){
            int c = 1;
            int d = 1;
            Integer r = new Integer(1);
            Integer o = new Integer(1);
            //System.out.println(a.equals(b));
            //System.out.println(a == b);
            //System.out.println(a = b);
            System.out.println("1".equals(String.valueOf(c)));false  ---> true,原因很明确吧
            System.out.println(r == o);// true  ----> false,r 和 o 是栈内存中两个不同的变量,且指向不同对象, 只是对象的属性相同,要输出true,请用equals且重写它
            System.out.println(r.equals(o));// true       ---> 这说明Integer类重写了equals()
            System.out.println(r == c);// true    --->等高手指点,初步觉得是编译器的原因
            System.out.println(r.equals(Integer.parseInt("1")));// true   -->同上
            System.out.println(r.equals(1));// true  --->同上
            System.out.println(r == 1);true    ---》同上
            }
                    
            
    }
      

  6.   

    int是基本数据类型
    Integer是包装类 是对象类型
      

  7.   

    System.out.println(r == c);// true    会涉及到拆,装箱
      

  8.   

    // jdk 1.5 增加了自动装箱和拆箱操作 int 整型 Integer 是整型的包装对象 主要分下面几种情况
     
     int c = 1;
         int d = 1;
         Integer r = new Integer(1);
         Integer o = new Integer(1);
         
         int c1 = 128;      Integer r1 = new Integer(128);
         Integer o1 = new Integer(128);
         
         Integer aa = 127;
         Integer bb = 127;
         
         Integer aa1 = 128;
         Integer bb1 = 128;
         
         Integer aa2 = -128;
         Integer bb2 = -128;
         
         Integer aa3 = -129;
         Integer bb3 = -129;
         
         System.out.println("1".equals(String.valueOf(c)));//true 
         System.out.println(r == o);// false
         System.out.println(r.equals(o));// true
         System.out.println(r == c);// true
         System.out.println(r.equals(Integer.parseInt("1")));// true
         System.out.println(r.equals(1));// true
         System.out.println(r == 1);//true
         System.out.println(c1 == r1);//true
         System.out.println(r1.equals(c1));// true
         System.out.println(aa == bb);//true
         System.out.println(aa1 == bb1);//false
         System.out.println(aa2 == bb2);//true
         System.out.println(aa3 == bb3);//false
      

  9.   

    int  和Integer 的区别就是一个没有封装直接从C语言借鉴过来的  一个是封装类
      

  10.   

    int 是原始数据类型
    Integer是对象,是int的包装类。
      

  11.   

    建议看一下该Integer类的源码equals
    public boolean equals(Object obj)比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。 覆盖:
    类 Object 中的 equals
    参数:
    obj - 要比较的对象。 
    返回:
    如果对象相同,则返回 true,否则返回 false。
    另请参见:
    Object.hashCode(), Hashtable
      

  12.   

    int是基本数据类型,integer是包装类,建议你去查下JDK