变量的声明是在栈中进行的,而实例化则是在堆中,故栈中只有基础数据与实例的引用。
故上面程序的不同点:
1、在外面的定义的变量,只在栈中声明了一次;
2、在里面的定义的变量,循环多少次就在栈中声明了多少次;
3、在内存或说资源节省方面,肯定是在外面定义较好,是摧荐的写法;
对于使用int等基本数据类型作为循环变量,只要你用的优化方面足够给力的主流的编译器,完全不需要关心在循环外还是循环内定义循环变量。
如果循环变量本身是复杂的对象,建议在循环外定义好,并且在for循环的赋值语句、判断语句中,都要避免重复创建对象。