Java变量作用域

Java变量作用域,java,scope,Java,Scope,当在局部范围和全局范围内初始化变量时,如果不在同一类中使用this关键字,我们如何使用全局范围?如果不使用this,它将始终是局部变量。没有它是不可能的。这种现象被称为 另请参见: 如果您使用此来确定变量引用的范围,它将始终指向实例变量 如果一个方法声明了一个与类级变量同名的局部变量,则前者将“隐藏”后者。要从方法体内部访问类级变量,请使用this关键字。我不确定您在Java上下文中所说的“全局范围”是什么意思。对于这个问题,一个代码示例会有很大帮助。为什么要避免使用“this”?考虑到J

当在局部范围和全局范围内初始化变量时,如果不在同一类中使用
this
关键字,我们如何使用全局范围?

如果不使用
this
,它将始终是局部变量。

没有它是不可能的。这种现象被称为

另请参见:


如果您使用
来确定变量引用的范围,它将始终指向实例变量


如果一个方法声明了一个与类级变量同名的局部变量,则前者将“隐藏”后者。要从方法体内部访问类级变量,请使用this关键字。

我不确定您在Java上下文中所说的“全局范围”是什么意思。对于这个问题,一个代码示例会有很大帮助。为什么要避免使用“this”?考虑到Java没有全局作用域,我不理解这个问题。您能澄清一下吗?如果您用这个来定义变量引用的范围,它将始终指向字段变量。@Vladimir您是对的。我已经改正了。这是一个错误。如果本地作用域中没有与实例变量同名的变量,则可以使用实例变量而不使用
this
前缀
public class VariableScope {

    int i=12;// Global
    public VariableScope(int i){// local

        System.out.println("local :"+i);
        System.out.println("Global :"+getGlobal());
    }
    public int getGlobal(){
        return i;
    }
}
public class VariableScope {

    int i=12;// Global
    public VariableScope(int i){// local

        System.out.println("local :"+i);
        System.out.println("Global :"+getGlobal());
    }
    public int getGlobal(){
        return i;
    }
}