a是仅有的八个基本类型之一,怎么会是对象呢。 int a; a = 0;的虚拟机指令: 0: iconst_0 1: istore_1 2: return而 int a = 0; 的指令为: 0: iconst_0 1: istore_1 2: return看到了吧,一点区别都没有,只不过后者把两句变成了一句。
这样看会清楚一点: public class test{ public static void main(String args[]){ int j; int i=4; } }C:\java>javap -c test Compiled from "test.java" public class test extends java.lang.Object{ public test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: returnpublic static void main(java.lang.String[]); Code: 0: iconst_4 1: istore_2 2: return}
int 就是定义变量的` 所以 a就是变量啊!`
public class test{ public static void main(String args[]){ int j; int i=4; //System.out.println(i); 未初始化j } } 0: iconst_4 1: istore_2 //直接放入2号位了 2: returnso...
无论是 int a; a=0;还是 int a=0;都是一样的.只不过前者是先声明变量,然后在赋值. 后者是声明变量后,直接赋值.
a=0;變量
int a=0;對象
大概哦概念完全忘記光了
- -|、下
a才是对象吧?
int a;
a = 0;的虚拟机指令: 0: iconst_0
1: istore_1
2: return而 int a = 0; 的指令为: 0: iconst_0
1: istore_1
2: return看到了吧,一点区别都没有,只不过后者把两句变成了一句。
public class test{
public static void main(String args[]){
int j;
int i=4;
}
}C:\java>javap -c test
Compiled from "test.java"
public class test extends java.lang.Object{
public test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: returnpublic static void main(java.lang.String[]);
Code:
0: iconst_4
1: istore_2
2: return}
public static void main(String args[]){
int j;
int i=4;
//System.out.println(i); 未初始化j
}
} 0: iconst_4
1: istore_2 //直接放入2号位了
2: returnso...
int a;
a=0;还是 int a=0;都是一样的.只不过前者是先声明变量,然后在赋值.
后者是声明变量后,直接赋值.