以下代码有什么区别..
int i=0;
List<CustomerReqRespEntity> customerReqRespEntities=new ArrayList<>();
for(int x=0;x<4;x++){
CustomerReqRespEntity customerReqRespEntity=new CustomerReqRespEntity();
customerReqRespEntity.setEntryId(++);
customerReqRespEntities.add(customerReqRespEntity);
}
// --------------------------------------------- ------------------------------
int i=0;
List<CustomerReqRespEntity> customerReqRespEntities=new ArrayList<>();
CustomerReqRespEntity customerReqRespEntity=new CustomerReqRespEntity();
customerReqRespEntity.setEntryId(i++);
customerReqRespEntities.add(customerReqRespEntity);
CustomerReqRespEntity customerReqRespEntity=new CustomerReqRespEntity();
customerReqRespEntity.setEntryId(i++);
customerReqRespEntities.add(customerReqRespEntity);
CustomerReqRespEntity customerReqRespEntity=new CustomerReqRespEntity();
customerReqRespEntity.setEntryId(i++);
customerReqRespEntities.add(customerReqRespEntity);
CustomerReqRespEntity customerReqRespEntity=new CustomerReqRespEntity();
customerReqRespEntity.setEntryId(i++);
customerReqRespEntities.add(customerReqRespEntity);
答案 0 :(得分:5)
我认为没有区别。但是,使用循环编写将提供更好的维护机会,因为在出现错误或任何其他情况时,您只需要修改单个块,而不是修改4.另外我认为您忘记在括号内添加i
在customerReqRespEntity.setEntryId(++);
&gt; customerReqRespEntity.setEntryId(i++);
中
更重要的是,您可能不需要i
变量,如果仅在循环内部使用它,则可以使用迭代器x
&gt; customerReqRespEntity.setEntryId(x);
答案 1 :(得分:1)
范围很重要@Siddappa Walake。在第一部分中,您的实例在for loop
内创建,这使它们成为该循环的本地实例,因此无法在循环外访问。在第二部分中,它不是在循环中创建的,我猜测它们是在方法中创建的,如果是这种情况,那么它们在整个方法中可用,并且可以作为一个方法传递给另一个方法参数。
答案 2 :(得分:0)
我认为你不能编译第二个,因为你不止一次使用变量名。
第一个代码中的循环有自己的范围,这意味着所有变量仅在每次迭代中有效,并在循环结束时被丢弃。
答案 3 :(得分:0)
您应该尽可能使用方法或循环。它们缩短了代码,消除了冗余,并使调试更容易。尽管你的误差很小(setEntryId(++)
),但它们都会产生相同的效果。
使用循环尤其是一种更好的做法,因为如果你想制作100个对象,使用循环将很多减少工作量; 5行和350行(猜测)之间的差异是相当大的差距。因此,您的第一个选项更好,但运行它时没有任何区别。