在Java,如果我们运行:
public class HelloWorld{
public static void main(String []args){
if (true) {
int test = 1;
} else {
int test = 2;
}
System.out.println(test);
}
}
它将抛出:
HelloWorld.java:9: error: cannot find symbol
System.out.println(test);
^
symbol: variable test
location: class HelloWorld
1 error
但是,在php中,如果我们运行:
php prettyprint-override"><?php
//Enter your code here, enjoy!
if (true) {
$test = 1;
} else {
$test = 2;
}
echo $test;
它将打印%1。
我怀疑这是否是因为Java是强类型语言,而php是弱类型语言。能不能有人给出一个更深层次、更低层次的解释?
这与静态和动态类型之间的差异无关。这里Java和PHP的区别是可变的作用域。
>
在PHP中$test=1;
将根据文档成为全局作用域的一部分。
在Java,int test=1;
将是本地范围的一部分,在您的情况下,仅限于if
块。
在Java中,变量的可见性范围受到{}
的限制
if (true) {
int test = 1;
} else {
int test = 2;
}
System.out.println(test);// Will fail to compile
注意死代码也很重要,如下所示:
int test;
if (true) {
test = 1;
} else {
test = 2;// Dead code
}
System.out.println(test);
由于if(true)
,else
块将永远不会执行,导致test=2
成为死代码。
问题内容: 以下Java代码无法编译。 为什么?在没有先声明的情况下,没有代码路径可导致程序将1分配给该路径。 我想到的范围可能仅限于第一条陈述,但后来我不明白为什么。如果我真的不想不必要地声明以提高性能怎么办?我不喜欢声明后不使用变量。 (您可能想争论一下,我不可以在第二条语句中简单地声明b ,在这种情况下,请想象一下它可能在其他地方处于循环中。) 问题答案: 为什么?如果没有先声明,没有代码路
问题内容: 我刚刚开始学习go lang,而对于在go lang中声明变量感到困惑 例如我已经声明,里面if … else语句。 但是终端出现错误 好像我在If语句中声明的任何内容都不起作用…我该如何解决? 问题答案: 因为变量仅在声明它们的范围内定义: 去玩 之间的区别,并是仅仅是分配和对变量的声明和分配新建分配FY语法 这个: 等效于: 您可能想要的是:
我不完全确定这在Java中是否可行,但在if语句中声明的字符串之外,如何使用if语句中声明的字符串呢?
问题内容: 有时我们有几个类,这些类的某些方法具有相同的签名,但是与声明的Java接口不对应。例如,和(在中的其他几个 )中都有一个方法 现在,假设我希望对具有该方法的对象进行一些操作。然后,我想有一个接口(或者自己定义),例如 这样我可以写: 但是,可悲的是,我不能: 此演员表将是非法的。编译器 知道 这 是不是 一个,因为类没有宣布实现该接口...... 然而“实际上”实现它 。 有时这会带来
我无法编译这个程序。有人看到我做错了什么吗?在if语句之后,变量matchOdds似乎不存在。但是我想打印出来。
my-app.ear my-ejb.jar my-webapp.war lib my-lib.jar 为了构造几何图形和存储数据,my-ejb需要oracle库与oracle spatial一起工作。JBoss8(wildfly)正确地加载了oracle的模块。 当我启动应用程序时,我收到。 当我启动应用程序时,我收到。我知道,当我从resultset读取数据时,resultset中的对象是类的实