java - for循环造对象,造了很多重复的s对象,为什么不报错?
大家讲道理
大家讲道理 2017-04-18 09:51:15
0
7
546

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(7)
迷茫

雷雷

刘奇
  1. 首先s是int类型,属于基本类型,不是Object类型,因此不存在“创建很多重复的s对象”之说

  2. 这里创建的是int类型的变量,这个变量是存在栈里的

  3. 即使你把循环次数设置成Integer.MAX_VALUE,也不会报错,具体原因不知道,不过编译器会优化代码,使得实际上每次使用的都是同一块内存区域,而不是每次都开辟一块新的内存区域

小葫芦

你可以试试Integer 哈哈

阿神

1、首先你要理解的是这里并没有一个名叫s的对象,代码中的s,以及i,只不过是对象的引用,相当于C语言中的指针,它只是指向这个对象空间的一个标志。
2、你的每次的for循环,都在声明一个同名的引用,那么这时候编译器是能够分辨出来这些同名的引用的,所以无论循环多少次,实际上你只拥有一个名叫‘s’的引用。而且它初始化在第一次for循环,以后的每次循环都是在给这个同名的引用赋值。
3、如果想看打印结果,把system.out放到局部变量的有效域内。

Peter_Zhu

1.这段代码没造对象,int是基本数据类型,不是对象。
2.这段代码会被编译器优化,结果我猜可能是 int s = 9;这样的形式,你可以javap一下看看

刘奇

因为你用的是java编译器。

刘奇

int何来的对象,只不过不断改变栈的值而已

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板