Integer和int

Integer和int


package com.imooc.servlet;


public class Test {


public static void main(String[] args) {

// TODO Auto-generated method stub

Integer n=Integer.parseInt("5");

int nn=(int)n;

for(int i=1;i<(int)n;i++) {

n+=i;

System.out.println(n);

}

}


}

为什么用nn就可以 用(int)n就不行

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,在循环中使用n,则n是一个Integer类型的对象。然而在Java中将对象强转为基本数据类型((int)n)放在循环中,会造成一个不可预知的错误。所以需要使用到jdk中会自动拆箱和装箱。 而拆箱需要一个表达式 如:int x=n才能自动拆箱。所以同学需要使用nn进行循环,而不可以使用(int)n。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小尤 2020-04-14 18:51:04

同学你好,查看Integer类的源码,调用一个参数的parseInt()方法时会调用双参的parseInt()方法 如下所示:

http://img1.sycdn.imooc.com//climg/5e9593eb0995a69a08710105.jpg

在双参的parseInt()方法中参数s是要被转化的字符串,参数radix是进制,比如:10表示将s按照10进制计算进行转换。所以通过(int)n循环得出的10进制内容。

http://img1.sycdn.imooc.com//climg/5e95942409e938ff06230099.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 万象天心 #1
    1.我明白了双参的parseInt()方法中将s按照十进制计算,那本题转换后不还是5吗? 2.parseInt()和for循环之间不是没什么关系吗,(int)n不就是强制类型转换吗
    2020-04-14 19:12:06
  • 提问者 万象天心 #2
    而且改成 int n=Integer.parseInt("5");计算结果仍然有问题
    2020-04-14 19:13:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师