Object[] objs = new Object[5];
for (int i = 0; i < 5; ++i) {
int j = i + 1;
Object obj = objs[i];
}
Run Code Online (Sandbox Code Playgroud)
我对上面的循环有两个问题:
j变量和obj引用,还是只创建一次然后只重新分配值?++i而不是i++作为单个指令来增加值?是为每个循环迭代创建了j变量和obj引用,还是只创建了一次,然后只重新赋值?
每次都声明和创建
将++ i而不是i ++作为单个指令来增加值是否有任何性能优势?
并不是的.
是为每个循环迭代创建了j变量和obj引用,还是只创建了一次,然后只重新赋值?
每次循环时,都会创建一个新的int,但obj只是对现有对象的引用,因此不会触发对象创建.无论如何,JVM很可能会为您优化.
将++ i而不是i ++作为单个指令来增加值是否有任何性能优势?
最有可能的是,JVM可能无论如何都会改变你的代码.
底线:使用更具可读性的内容,并将变量的范围限制在使用它们的位置.
实际上,JVM可能会将您的代码更改为此,因为您不在循环中使用局部变量:
Object[] objs = new Object[5];
//for (int i = 0; i < 5; ++i) {
// int j = i + 1;
// Object obj = objs[i];
//}
Run Code Online (Sandbox Code Playgroud)