具体怎么实现的不清楚,不过如果从c的机制来理解的话还是不一样的,因为在你写了int x;之后系统不但分配空间给这个变量使用,同时也初始化这个变量成0(在c里面不初始化),然后你更改x的值为10。也就是说系统要初始化一次,更改一次。而如果你直接写int x = 10的话,只初始化一次就ok了。如果java虚拟机或者编译器是用c实现的话我想效率就不同了^_^
解决方案 »
- 效率与简洁书写之争,求解释
- 高分悬赏:Itext生成word文档的时候怎么给文字加链接?
- 这个算法有点难!高手进来
- junit几个方法的运行先后顺序
- 请高手帮忙
- 求一Applet程序!
- 怎样控制TextField的字符数量
- 通过InputStream获得URL页面代码,程序为什么总是会死在while (in.available()!=0)循坏中?
- String s = getDocumentBase().getFile();int i = s.indexOf(58);请问i是多少?
- Applet可以操作HTML的元素吗?
- 如何获得类中成员变量和成员函数的个数?
- 如何判断(同一目的)两个Java程序的效率优劣?
al = new ArrayList();--使用时再赋值就不用怕已经存数据,忘记的问题了,al肯定是空的了
{
Test()
{
int x=10;
int y;
y=10;
}
};对应的操作指令如下:class Test extends java.lang.Object{
Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: bipush 10
6: istore_1
7: bipush 10
9: istore_2
10: return}所以可以看出在java中这两种声明方法是完全一样的
先生成常量10,然后把10push到stack去,最后把stack的10保存到本地变量int x,x=10先将10push到stack,然后保存到x其实差不多
呵呵
的确有点不一样就是编译