最近老在纠结一个问题可能还是对虚拟机不太了解,麻烦大神帮忙解释下: 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优化
解决方案 »
- 请问用jacob 操作IamgeMagick 实现的pdf转换成html的代码怎么写
- 速度恢复
- 帮忙做个简单的效果!!!!!!!!!!!
- java是否可以显示实现引用传递
- java操作word,如何生成商品条形码?
- 急啊,马上给分!在Struts+Spring+Hibernate下,怎么从本地读一个图片存在服务器的 BLOB字段里?(二进制?)
- 枚举类有valuse()这个方法吗?我在jdk5doc里搜索enum,他没有这个方法,难道是他继承别人的?那又是继承谁的?
- 用log4j记录异常信息
- 关于 JCreator 与 JDK 的问题!!!
- 如何把double型的数据,运算后自动四舍五入保留两位小数(因为是货币值)
- 字符串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));
}
看不出区别,主要是想让人分析下在栈中如果相同变量放入,是怎么个过程