A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java陈辉 中级黑马   /  2013-12-16 20:40  /  997 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面这段程序执行的结果为什么是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));
                                                                       
        }
       
}


评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

正序浏览
首先equal比较的是里面的内容 ,然后是 new Integer(34)会把int转型成Integer类型,同样new Integer("34")会把String转型成Integer类型。最终里面都Integer类型,而且里面的肉容还相等,所以就会打印true了
回复 使用道具 举报
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");

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 小斥候 于 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.




评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
用equals它是比较里面的内容,因为这二者里面的内容都是一样的,如果你有==号就不相等,而你说的一个是int的34一个是String的34,因为Integer对不同的参数有不同的构造函数所以把他们变成对象之后里面的内容就相等了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马