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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cuilitang 中级黑马   /  2013-10-16 18:17  /  1644 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  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>
复制代码

为何此处不自动装箱?

14 个回复

倒序浏览
为神马木有人回答呢?
回复 使用道具 举报
本帖最后由 王广亚 于 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. }
复制代码
回复 使用道具 举报
int是Integer对象中的一个基本数据类型,仅是一个字段,而装箱是对对象而言,在你的代码中,int本身就不是一个对象描述,所以,不能自动装箱,同样的,double,char等这些都只是基本数据类型,若是要创建对象,那么就用它们所对应的类:Double;Character;
回复 使用道具 举报
王飚 发表于 2013-10-16 19:25
int是Integer对象中的一个基本数据类型,仅是一个字段,而装箱是对对象而言,在你的代码中,int本身就不是 ...

亲,
1.Integer是一个类。它对应的基本数据类型是int。而不是包含关系"int是Integer对象中的一个基本数据类型"
2.int是基本数据类型,不是字段,字段是数据库里面的概念
2.装箱就是对基本类型而言的,基本类型通过装箱变成对象,从而可以调用方法,支持更多操作
3.jdk1.5之后,支持自动装箱,既支持由基本数据类型向对象的自动转换。转换完成之后便可以调用Integer类的方法。
回复 使用道具 举报
编号错了,是1,2,3,4{:soso_e129:}
回复 使用道具 举报
王广亚 发表于 2013-10-16 19:20
parseInt()是一个静态方法,调用时要用Integer类名,或者他的对象来调用(用他的对象调用其实都是没必要 ...

int不是可以直接自动装箱成为Integer吗?
回复 使用道具 举报
王飚 中级黑马 2013-10-16 20:08:39
8#
cuilitang 发表于 2013-10-16 19:39
亲,
1.Integer是一个类。它对应的基本数据类型是int。而不是包含关系"int是Integer对象中的一个基本数据 ...

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

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

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

我两个程序的操作对象都是10 啊
回复 使用道具 举报
王飚 发表于 2013-10-16 20:08
“Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。”
请 ...

是啊,可是即使这样还是不能解释它为什么不自动装箱啊
回复 使用道具 举报
cuilitang 发表于 2013-10-16 21:36
我两个程序的操作对象都是10 啊

就是应为i(int类型的数据)不是你操作的目标才不自动装箱,
回复 使用道具 举报

Integer.parseInt("10");——》“10”他是个字符串不是int类型的数据
回复 使用道具 举报
oath 中级黑马 2013-10-17 09:38:44
15#
所以说,老师们的视屏并不能解决我们所有的疑惑……,我看你很善于占牛角尖,有把东西学深学透的潜质!good。

基本数据类型的自动装箱与拆箱必须有包装类的引用。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马