public class Test04 { public static void main(String[] args) { Integer i=new Integer(22); System.out.println(i); } }
这段代码输出结果是22,为什么是22,而不是地址呢?
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
应该是触发了自动拆箱?Integer是java对int的包装类,在需要传递int作为参数的地方传入一个Integer对象,java会自动把这个Integer拆成int,反之在Integer作为参数的地方传int,会触发自动装箱----------------------更新----------------------------我通过debug看了一下源码的调用过程,首先调用的重载方法是println(Object x) ,在println(Object x)里面调用的是String.valueOf(x),而在valueOf(Object obj)调用的是 obj.toString()到这里就能看出来,println一个引用数据类型都会自动调用toString方法而Integer类作为Java中基本数据类型int的包装类,它在里面写好了toString方法,就是返回整数值对应的字符串
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!