java基础测试
public class Inc {
public static void main(String[] args) {
Inc inc = new Inc();
int i = 0;
inc.fermin(i);
i = i++; //陷阱
System.out.println(i);
}
void fermin(int i){
i++;
}
}
会输出什么?
答案解说:
可以用javap工具来观察内存的运动:
1,新建一个文件 c:/T.java :
class T {
public static void main(String[] args){
int i = 0;
i
= (i++) ;
System.out.println(i);
}
}
2,在cmd中执行: cd \ ,然后执行“ javac T.java && javap -c -verbose T >
Tout.txt && java T ”
打开Tout.txt文件,其中一段字节码是这样的:
public static void main(java.lang.String[]);
Code:
Stack=2,
Locals=2, Args_size=1
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_1
7: getstatic #2; //Field java/lang/System.out
java/io/PrintStream;
10: iload_1
11: invokevirtual #3; //Method java/io/PrintStream.println
I)V
14: return
LineNumberTable:
line 3: 0
line 4: 2
line 5: 7
line 6:
14
}
其中的2,3步就是完成i++,是先load(把i的值压栈)再加1.
如果是++i,那么2,3两步执行顺序正好相反。这里有两个stack进行数据存储。
【2008-2】
|
相关推荐
JAVA基础测试 JAVA基础测试 JAVA基础测试 JAVA基础测试 JAVA基础测试 JAVA基础测试 JAVA基础测试 JAVA基础测试
JAVA基础测试中常见的异常问题汇总
java 基础 测试题java 基础 测试题java 基础 测试题java 基础 测试题
北大青鸟内部JAVA基础测试题 共有50个选择题
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
java基础测试题java基础测试题
java考试题,感觉还不错,有兴趣的童鞋拿去看看!
JAVA基础测试中常见的异常问题汇总.txt
Java基础测试题 几十道题 欢迎下载,包含有答案!!!!!!
Java基础测试题.doc
java基础测试(附答案) 北大青鸟使用,可作为考试前测试及复习使用。
Java基础测试题答案.doc
java基础测试题及答案.doc
蛮不错的java基础测试,希望能帮到java初学者
(完整word)Java基础测试题.doc
java基础测试卷.pdf
Java基础测试题.pdf
java基础测试题及答案