class test {
public static void main(String[] args)
{
int i = 10;
int j;
if(i == 10) {
j = 20;
} else if (i == 20) {
j = 30;
}
System.out.println(j);
}
}
输出:<代码>编译错误。变量j可能尚未初始化。
为什么会这样呢?
编译器给出一个错误,因为即使您在< code>if和< code>else if块中给变量< code>j赋值,在一种情况下< code>j的值可能没有任何值(initialize ),这就是< code>else条件。这就是编译器抱怨错误的原因。将< code>else块添加到您的代码中,并在其中初始化< code>j。如下图所示
public static void main(String[] args) {
int I = 10;
int j; // j=0; If you do this, then also, the error should go away and no need for else block
if (I == 10) {
j = 20;
} else if (I == 20) {
j = 30;
} else {
j = 0;
}
System.out.println(j);
}
当您使用< code>if-else-if而不使用< code>else时,有可能所有条件都不是< code>true,因此不会执行初始化< code>j的语句,因此编译器会告诉您,当您使用语句< code>System.out.println(j)访问它时,它可能还没有初始化;。
这可以通过添加<code>else</code>子句来避免:
if (I==10) {
j = 20;
} else if (I==20) {
j = 30;
} else {
j = 0;
}
顺便说一句,您的标题提到了类变量,但您的问题体中没有。与局部变量不同,实例和类变量有一个默认值,因此您不必在访问它们之前对它们进行初始化。
本文向大家介绍局部变量和全局变量之间的差异,包括了局部变量和全局变量之间的差异的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解局部变量和全局变量之间的区别。 局部变量 通常在函数内部声明它。 如果未初始化,则将垃圾值存储在其中。 在函数开始执行时创建。 功能终止后,它将丢失。 由于可以通过单个功能访问局部变量/数据,因此无法进行数据共享。 需要将参数传递给局部变量,以便它们可以访问函
两者之间有实际区别吗 和 除了第一个更短之外,一个优先级更高,还是更慢? 编辑: 我意识到这可能并不清楚,但通常是。
我只是在学习编码,所以我遇到了“k不能解决”的问题。 我以前尝试过引入变量,如果运算符by: 我预期输出为2 相反,无法解析got k
和 C 语言一样,按照变量的作用域,我们可以把变量划分为局部变量和全局变量 Go 语言中局部变量的概念以及全局变量的概念和C语言一模一样 局部变量: 定义在函数内部的变量以及函数的形参称为局部变量 作用域:从定义哪一行开始直到与其所在的代码块结束 生命周期:从程序运行到定义哪一行开始分配存储空间到程序离开该变量所在的作用域 全局变量: 定义在函数外面的变量称为全局变量 作用域范围:从定义哪行开始直
问题内容: 除了名称,这些类之间是否有任何区别? 如果我使用或不使用声明变量的方法,会有所不同吗? 我主要担心的是,我会以一种方式使用它,否则会给我带来进一步的问题。 问题答案: 外部变量集属于该类。它们被所有实例共享。 在内部(以及所有其他方法函数)创建并以其开头的变量属于对象实例。
主要内容:局部变量,全局变量,局部变量和全局变量的综合示例在《 C语言形参和实参的区别》中提到,形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。 所谓 作用域( Scope ) ,就是变量的有效范围。 不仅对于形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。 局部变量 定义在函数内部的变量称为 局部变量(Local Variable) ,