黑马程序员技术交流社区

标题: 为何此处不自动装箱? [打印本页]

作者: cuilitang    时间: 2013-10-16 18:17
标题: 为何此处不自动装箱?

  1. public class ceshi{
  2. public static void main(String[]args){
  3.   int i = 1;
  4.   int j = i.parseInt("10");
  5.   System.out.println(j);
  6. }
  7. }<p> </p>
复制代码

  1. public class ceshi{
  2. public static void main(String[]args){
  3.   Integer i = 1;
  4.   int j = i.parseInt("10");
  5.   System.out.println(j);
  6. }
  7. }<p> </p>
复制代码

为何此处不自动装箱?

作者: cuilitang    时间: 2013-10-16 18:54
为神马木有人回答呢?
作者: 王广亚    时间: 2013-10-16 19:20
本帖最后由 王广亚 于 2013-10-16 19:23 编辑

parseInt()是一个静态方法,调用时要用Integer类名,或者他的对象来调用(用他的对象调用其实都是没必要的,虽然能通过,建议类名调用)。
而不是int型数据调用。
  1. public class ceshi{
  2. public static void main(String[]args){
  3.   int i = 1;
  4.   int j = Integer.parseInt("10");
  5.   System.out.println(j);
  6. }
复制代码

作者: 王飚    时间: 2013-10-16 19:25
int是Integer对象中的一个基本数据类型,仅是一个字段,而装箱是对对象而言,在你的代码中,int本身就不是一个对象描述,所以,不能自动装箱,同样的,double,char等这些都只是基本数据类型,若是要创建对象,那么就用它们所对应的类:Double;Character;
作者: cuilitang    时间: 2013-10-16 19:39
王飚 发表于 2013-10-16 19:25
int是Integer对象中的一个基本数据类型,仅是一个字段,而装箱是对对象而言,在你的代码中,int本身就不是 ...

亲,
1.Integer是一个类。它对应的基本数据类型是int。而不是包含关系"int是Integer对象中的一个基本数据类型"
2.int是基本数据类型,不是字段,字段是数据库里面的概念
2.装箱就是对基本类型而言的,基本类型通过装箱变成对象,从而可以调用方法,支持更多操作
3.jdk1.5之后,支持自动装箱,既支持由基本数据类型向对象的自动转换。转换完成之后便可以调用Integer类的方法。

作者: cuilitang    时间: 2013-10-16 19:40
编号错了,是1,2,3,4{:soso_e129:}
作者: cuilitang    时间: 2013-10-16 19:41
王广亚 发表于 2013-10-16 19:20
parseInt()是一个静态方法,调用时要用Integer类名,或者他的对象来调用(用他的对象调用其实都是没必要 ...

int不是可以直接自动装箱成为Integer吗?
作者: 王飚    时间: 2013-10-16 20:08
cuilitang 发表于 2013-10-16 19:39
亲,
1.Integer是一个类。它对应的基本数据类型是int。而不是包含关系"int是Integer对象中的一个基本数据 ...

“Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。”
请参阅JDK1.6
作者: 王广亚    时间: 2013-10-16 21:23
本帖最后由 王广亚 于 2013-10-16 21:25 编辑
cuilitang 发表于 2013-10-16 19:41
int不是可以直接自动装箱成为Integer吗?

你操作的是“10”又不是i,如果你操作的是i的话他会自动装箱,i他只是一个调用者,不是被操作的对象,也可以理解为此时关注的焦点不是i。
作者: cuilitang    时间: 2013-10-16 21:26
王广亚 发表于 2013-10-16 21:23
你操作的是“10”又不是i,如果你操作的是i的话他会自动装箱,i他只是一个调用者,不是被操作的对象,也可 ...

10也是int类型啊
作者: cuilitang    时间: 2013-10-16 21:36
王广亚 发表于 2013-10-16 21:23
你操作的是“10”又不是i,如果你操作的是i的话他会自动装箱,i他只是一个调用者,不是被操作的对象,也可 ...

我两个程序的操作对象都是10 啊
作者: cuilitang    时间: 2013-10-16 21:38
王飚 发表于 2013-10-16 20:08
“Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。”
请 ...

是啊,可是即使这样还是不能解释它为什么不自动装箱啊
作者: 王广亚    时间: 2013-10-16 22:30
cuilitang 发表于 2013-10-16 21:36
我两个程序的操作对象都是10 啊

就是应为i(int类型的数据)不是你操作的目标才不自动装箱,
作者: 王广亚    时间: 2013-10-16 22:32
cuilitang 发表于 2013-10-16 21:26
10也是int类型啊

Integer.parseInt("10");——》“10”他是个字符串不是int类型的数据
作者: oath    时间: 2013-10-17 09:38
所以说,老师们的视屏并不能解决我们所有的疑惑……,我看你很善于占牛角尖,有把东西学深学透的潜质!good。

基本数据类型的自动装箱与拆箱必须有包装类的引用。




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