Java中的局部变量

等级29Access

所有代码都使用Java。

public class TestLocal 
{
    public static void main(String [] args) 
    {
        int x;
         if (args[0] != null) 
         { // assume you know this will
           // always be true
             x = 7;  // statement will run
         }
     int y = x; // the compiler will choke here
    }
}

所以,我的问题是为什么编译器会在这里阻塞?它会绕过if语句吗(看起来很可怕...)如果我在if语句块之外初始化x,则编译器不会抱怨,如以下代码所示:

public class TestLocal 
{
    public static void main(String [] args) 
    {
        int x;
        x = 7; // compiler is happy now..:)
        if (args[0] != null) 
        { // assume you know this will
         // always be true
         // statement will run
        }
        int y = x; // the compiler not complain here now.
    }
}

为什么编译器会出现这种可怕的行为?

RaptorDotCpp

Java要求您初始化局部变量作为一种安全措施。它可以防止您意外读取奇数值。如果编译器没有抱怨,而您要读取x的值,则可能是任何值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

在Java中开关控制局部变量

来自分类Java

局部变量是多余的Java

来自分类Java

如何在Java中创建静态局部变量?

来自分类Java

为什么局部变量在Java中是线程安全的

来自分类Java

为什么局部变量在Java中也称为“自动”?

来自分类Java

在内部类中访问局部变量(java)

来自分类Java

Java字节码中的局部变量

来自分类Java

Runnable中的ThreadLocal与局部变量

来自分类Java

Java中的局部变量

来自分类Java

Java中是否有线程组局部变量?

来自分类Java

如何通过将局部变量存储到Java Android中的类变量(全局)来访问局部变量

来自分类Java

什么破坏了Java中的局部变量?

来自分类Dev

地图任务中的局部变量?

来自分类Dev

Java中的局部变量与全局变量同名

来自分类Dev

Java内存模型和局部变量

来自分类Dev

访问ASM Java库中的局部变量

来自分类Dev

为什么在类中定义的变量不是局部变量而是Java中的实例变量?

来自分类Dev

如何使局部变量在Java中的循环外可访问

来自分类Dev

Java-静态方法中的局部变量

来自分类Dev

Java递归和局部变量

来自分类Dev

我在C中的局部变量?

来自分类Dev

Java:lambda局部变量声明问题

来自分类Dev

在Hive中创建局部变量

来自分类Dev

在Java Lambda中编辑局部变量

来自分类Dev

借用嵌套lambda中的局部变量

来自分类Dev

Java局部变量线程安全

来自分类Dev

Java ASM - 如何在方法中创建局部变量

来自分类Dev

递归保留值中的局部变量?

来自分类Dev

Java - “未使用局部变量”