黑马程序员技术交流社区

标题: 关于包装类的问题 [打印本页]

作者: java陈辉    时间: 2013-12-16 20:40
标题: 关于包装类的问题
下面这段程序执行的结果为什么是true?x中封装的是int类型的数据,而y中封装的是String类型的数据,为什么x.equals(y)却是true,求解释。
public class WrapperTest {

        public static void main(String[] args) {

                Integer x = new Integer(34);        //这里34为int类型。

                Integer y = new Integer("34");    //这里"34"为String类型
               
                System.out.println(x.equals(y));
                                                                       
        }
       
}



作者: wowo6288    时间: 2013-12-16 21:19
用equals它是比较里面的内容,因为这二者里面的内容都是一样的,如果你有==号就不相等,而你说的一个是int的34一个是String的34,因为Integer对不同的参数有不同的构造函数所以把他们变成对象之后里面的内容就相等了
作者: 小斥候    时间: 2013-12-16 21:47
本帖最后由 小斥候 于 2013-12-16 21:53 编辑

装箱成Integer类型了
public Integer(int value)Constructs a newly allocated Integer object that represents the specified int value.
Parameters:value - the value to be represented by the Integer object.



public Integer(String s)        throws NumberFormatExceptionConstructs a newly allocated Integer object that represents the int value indicated by the String parameter. The string is converted to an int value in exactly the manner used by the parseInt method for radix 10.
Parameters:s - the String to be converted to an Integer.





作者: ❦_H_t    时间: 2013-12-16 22:01
Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。
此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换。
public class WrapperTest {

        public static void main(String[] args) {

                Integer x = new Integer(34);        //这里34为int类型。

                Integer y = new Integer("34");    //这里"34"为String类型
               
                System.out.println(x.equals(y));
                                                                        
        }
        
}
所以以上代码中的Integer x = new Integer(34); 与 Integer y = new Integer("34");的值是相等的,如果你要创建一个是int一个是String的话,应该是:
Integer x = new Integer(34);
String y = new String("34");
作者: ISAI    时间: 2013-12-16 22:06
首先equal比较的是里面的内容 ,然后是 new Integer(34)会把int转型成Integer类型,同样new Integer("34")会把String转型成Integer类型。最终里面都Integer类型,而且里面的肉容还相等,所以就会打印true了




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