最近老在纠结一个问题可能还是对虚拟机不太了解,麻烦大神帮忙解释下: public static void test() {
for(int i=0;i<10;i++){
int s = i;
System.out.println(s);
}
}和 public static void test() {
int s = 0;
for(int i=0;i<10;i++){
s = i;
System.out.println(s);
}
}问下S在for外面定义好,还是在里面定义好,在里面s是不是每次都要再栈区创建一个变量s,还是有其他机制来优化。jvm虚拟机java优化
for(int i=0;i<10;i++){
int s = i;
System.out.println(s);
}
}和 public static void test() {
int s = 0;
for(int i=0;i<10;i++){
s = i;
System.out.println(s);
}
}问下S在for外面定义好,还是在里面定义好,在里面s是不是每次都要再栈区创建一个变量s,还是有其他机制来优化。jvm虚拟机java优化
解决方案 »
- 线程问题
- java如何实现在linux下执行mount命令
- 介绍JAVA类库的最好的书是哪一本?
- 高分求java运算函数的组件,类似excel中的自定义公式
- 有什么好的软件可以打包jre和jar吗,希望打包后比较小,这样java转成课执行文件比较好弄
- 数字签名
- 大侠!帮帮我。JAVA中的双击事件是什么啊?
- 谁能告诉我这个论坛的java原代码?(不够再加!!!)
- 为什么在jdk1。3版本中的demo\jfc下一些applet能在applerviewer下执行,而在它的.html中不执行呢
- enum编译出错
- 字符串str="ABCDEFGHIJK",要求输出最少一个最多八个的所有组合(不排序,连续字母)。
- 大神们帮忙了啊、
在外面不用每次都从新定义你可以试一下int i;
for(i=0;i<10000;i++){
System.out.println(i);
}
System.currentTimeMillis();
上边的要比下边的快
for(int i=0;i<10000;i++){
System.out.println(i);
}
System.currentTimeMillis();
public static void main(String[] args) {
long s = System.currentTimeMillis();
int res=0;
for(int i=0;i<100000;i++){
res = i;
}
long e =System.currentTimeMillis();
System.out.println("------" +(e-s));
long s1 = System.currentTimeMillis();
for(int i=0;i<100000;i++){
int inRes=i;
}
long e1 =System.currentTimeMillis();
System.out.println("------" + (e1-s1));
}
看不出区别,主要是想让人分析下在栈中如果相同变量放入,是怎么个过程