JAVA变量声明在循环体内还是循环体外

(1)

for (int i = 0; i < 10000; ++i) {
  Object obj = new Object();
  System.out.println("obj= "+ obj);
} 

(2)

Object obj = null;

for (int i = 0; i < 10000; ++i) {
  obj = new Object();
  System.out.println("obj= "+ obj);
} 

在循环体外,始终都是这一个对象,循环放入的都是最新的值。

在循环体内,创建的是不同的对象,每次放入的对应这不同值的对象。

将变量声明在循环体外的方式多少能节省点空间,可是带来的变量声明周期变长,回收时间推后以及更加严重的隐性bug危险等问题很多。比较而言,有些得不偿失了。

将对象的值赋值为null,相当于把对象的引用清除掉,即把引用对象的指针kill掉,再使用集合就会报空指针异常;

调用集合的clear()方法,是把集合内部的对象都清空,而集合的引用还存在。

for (int i = 0; i < 10000; ++i) {
  Object obj = new Object();
  System.out.println("obj= "+ obj);
} 

应改成
(2)

Object obj = null;

for (int i = 0; i < 10000; ++i) {
  obj = new Object();
  System.out.println("obj= "+ obj);
} 

原文地址:https://www.cnblogs.com/hpwd/p/12187005.html

时间: 2024-08-01 07:31:17

JAVA变量声明在循环体内还是循环体外的相关文章

变量声明在循环体内还是循环体外的争论

(1) for (int i = 0; i < 10000; ++i) { Object obj = new Object(); System.out.println("obj= "+ obj); } 应改成(2) Object obj = null; for (int i = 0; i < 10000; ++i) { obj = new Object(); System.out.println("obj= "+ obj); } 今天想对"变量

java循环创建对象应该在循环体内还是循环体外

第一种: for(int i = 0; i < 100; i++) { Object obj = new Object() } 第二种: Object obj = null for(int i = 0; i < 10000; i++) { obj = new Object() } 第一次: Object obj = new Object();//写在100个循环内等于你有100个引用对应了100个对象 所以100个对象在一段时间内都是会占用内存,直到内存不足GC主动回收. 第二次: obj =

java 变量声明

/**java 命名规范 * 变量.方法 命名: * 首字母小写+驼峰命名 例如:ageNew/runRun(); * 常量:大写+下划线 例如:MAX_SPEED * 类名:首字母大写+驼峰命名发 例如:GoodMain * */ /** * 变量是程序最基本的存储单元 * 局部变量:方法或语句块内部定义的变量 作用域在 这个方法范围内 * 在使用前必须进行初始化 * */ public static void testVariable(){ int x,y,z;//一次声明多个 int a;

Java变量&amp;&amp;简单程序流程&amp;&amp;循环

变量:强类型局部变量: 1.先赋值,后使用 2.作用范围:从定义开始,到所在代码块结束 3.重合范围内不允许重复命名 数据类型(8中基本类型) byte 1B -128~127 short 2B -32768~32767 int 4B long 8B l或L float 4B f 或F double 8B d或D 不加 boolean 1B true false char 2B 'A'对象类型 String "hehe"强制转换 int a=(int)12.5; 自动类型提升 a b

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)一.Java标识符给类.接口.方法等命名的字符序列.1.标识符组成(1)英文字母大小写:(2)数字(不能以数字开头):(3)$和_.2.命名规则常量:每个单次字母均大写,若由多个单词组成,则每个单词间用下划线隔开.变量.方法:第一个单词全部小写,若由多个单词组成,则第一个单词全部小写,从第二个单词开始,每个单词首字母大写其他单词首字母小写.包:所有字母都小写,多级包采用域名反写,每级用"."隔开.类.接口:每个单词首字

Java 螺旋数组的实现方式-一个循环实现哦

随着编程的学习和工作,感触越来越深的,就是如何做好对需求的理解.那么在学习的过程中,就是如何将一个实际问题,转化成计算机语言去实现.我觉得我的这方面的能力很是欠缺啊. 今天分享一下一个螺旋数组例子的分析: 贴上code: package excesize; /* * 螺旋数组: * 4 * 1 2 3 4 * 12 13 14 5 * 11 16 15 6 * 10 9 8 7 */ public class LuoxuanArray { public static void main(Stri

【python3之变量,输入输出,判断,循环】

一.python的基础语法和规则 1.变量 ①.变量的命名规则 语法: (下划线或字母)+(任意数目的字母.数字或下划线) 变量名必须以下划线或字母开头,而后面接任意数目的字母.数字或下划线.下划线分割. 区分大小写: SPAM和spam不同 不能使用python内置关键字,以下关键字不能声明为变量名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exe

【python的变量,输入输出,判断,循环】

一.python的基础语法和规则 1.变量 ①.变量的命名规则 语法: (下划线或字母)+(任意数目的字母.数字或下划线) 变量名必须以下划线或字母开头,而后面接任意数目的字母.数字或下划线.下划线分割. 区分大小写: SPAM和spam不同 不能使用python内置关键字,以下关键字不能声明为变量名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exe

SQL连接查询、变量、运算符、分支、循环语句

连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on 2.union 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型.为不同实体创建新的表,随后通过连接进行查询. 示例一: 示例二: 示例三: 示例四: