我想调试Java程序的整个流程。Eclipse中F5
(进入)和F6
(进入)之间有什么区别?
考虑以下代码,将当前指令指针(将在下一步执行的行,由表示->
)放在f(x)
in 的行g()
,并由g(2)
in 的行调用main()
:
public class testprog {
static void f (int x) {
System.out.println ("num is " + (x+0)); // <- STEP INTO
}
static void g (int x) {
-> f(x); //
f(1); // <----------------------------------- STEP OVER
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- STEP OUT OF
}
}
如果此时要 进入 ,则将移至中的println()
行f()
,进入函数调用。
如果要在那一步 结束 ,您将移至中的f(1)
行g()
,从而结束函数调用。
调试器的另一个有用功能是单步 退出 或单步 返回。
在这种情况下,单步返回基本上将使您遍历当前函数,直到您返回一个级别。换句话说,它将逐步执行f(x)
和f(1)
,然后返回到调用函数,最后到达g(3)
in
main()
。
Eclipse(至少是Europa,这是我目前可以使用的唯一一个)F5
用于step into
,F6
for step over
和F7
for
step return
。
问题内容: Eclipse的Java编译器是否只是包裹该程序的同一个内核的包装器,还是完全独立的编译器?如果是后者,为什么还要重新发明轮子呢? 问题答案: Eclipse实现了自己的编译器,称为Java Eclipse编译器(ECJ)。 它不同于Sun JDK附带的编译器javac。一个显着的区别是Eclipse编译器使您可以运行实际上未正确编译的代码。如果永远不会运行带有错误的代码块,则您的程序
问题内容: 我看到Eclipse有两种主要的发行版本- 一种在3.6、3.7、3.8路径上,另一种在4.0、4.1路径上(http://www.eclipse.org/e4/)。 我不清楚这两种分布之间的区别是什么? 问题答案: 3.7(代号)和3.8是漏洞修复和稳定性版本,而4.0、4.1、4.2(代号)是成熟的平台功能集。版本3.8和4.2同时进行。您可以在此处找到有关Eclipse项目计划的
问题内容: 在Eclipse中,modulepath和classpath有什么区别,我应该使用哪一个在lib文件夹中添加jar?为什么JRE系统库出现在modulepath中? 问题答案: 模块系统主要对代码有以下影响: 只能从一个模块访问一个软件包(嵌套的软件包被视为单独的软件包,因此即使该软件包在模块中,该软件包也可以在模块中) 您只能访问其他模块导出包中的公共字段和代码方法。即使是反射也是如
在Eclipse中,modulepath和classpath之间有什么区别,我应该使用哪一个在lib文件夹中添加一个jar?为什么JRE系统库会出现在ModulePath中?
问题内容: 而且似乎都返回了。是否有细微的区别或可以互换使用?另外,是超阶级的公共财产吗?(我知道这是存在的,但似乎在javadocs中找不到任何提及) 问题答案: 一个是实例方法,因此它返回特定对象的类,另一个是Class常量(即在编译时已知)。 两种情况都返回Class对象的实例,该实例描述了特定的Java类。对于相同的类,它们返回相同的实例(每个类只有一个Class对象)。 到达Class对
问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa