Java变量的作用域

作者 : 慕源网 本文共1696个字,预计阅读时间需要5分钟 发布时间: 2022-05-16 共198人阅读

java定义变量范围,变量的作用域是程序中可访问变量的范围。与C/C++类似,在Java中,所有标识符都是词法(或静态)作用域的,也就是说,变量的作用域可以在编译时确定。Java范围规则可以包括在以下类别中。

成员变量

这些变量必须在类内部声明。它们可以在class的任何地方直接访问。我们来看一个例子:

public class Test
{
    // All variables defined directly inside a class 
    // are member variables
    int a;
    private String b;
    void method1() {....}
    int method2() {....}
    char c;
}
  • 我们可以在类中的任何地方声明类变量
  • 为成员变量指定的访问权限不会影响它们在类中的范围。
  • 成员变量可以在类外部访问,规则如下
修饰符      Package  子类  World

public          Yes      Yes     Yes

protected       Yes      Yes     No

Default (no
modifier)       Yes       No     No

private         No        No     No

局部变量

​ 局部变量的作用域,仅限于方法内部,以大括号开始,以大括号结束。局部变量必须先声明和初始化值

public class Test
{
    void method1() 
    {
       // Local variable (Method level scope)
       int x;
    }
}

这是方法作用域的另一个示例,变量作为参数传递给方法:

class Test
{
    private int x;
    public void setX(int x)
    {
        this.x = x;
    }
}

上面的代码使用this关键字来区分局部变量和类变量。

示例:

public class Test
{
	static int x = 11;
	private int y = 33;
	public void method1(int x)
	{
		Test t = new Test();
		this.x = 22;
		y = 44;

		System.out.println("Test.x: " + Test.x);
		System.out.println("t.x: " + t.x);
		System.out.println("t.y: " + t.y);
		System.out.println("y: " + y);
	}

	public static void main(String args[])
	{
		Test t = new Test();
		t.method1(5);
	}
}

输出:

Test.x: 22
t.x: 22
t.y: 33
y: 44

循环变量

在方法中的一对括号“{”和“}”内声明的变量仅在括号内具有作用域。

public class Test
{
	public static void main(String args[])
	{
		{
			// The variable x has scope within
			// brackets
			int x = 10;
			System.out.println(x);
		}
		
		// Uncommenting below line would produce
		// error since variable x is out of scope.

		// System.out.println(x);
	}
}

输出: 

10

 for 循环

class Test
{
	public static void main(String args[])
	{
		for (int x = 0; x < 4; x++)
		{
			System.out.println(x);
		}

		// Will produce error
		System.out.println(x);
	}
}

输出: 

11: error: cannot find symbol
        System.out.println(x);  

上面的正确做法是,

// Above program after correcting the error
class Test
{
	public static void main(String args[])
	{
		int x;
		for (x = 0; x < 4; x++)
		{
			System.out.println(x);
		}

	System.out.println(x);
	}
}

输出:

0
1
2
3
4

关于 Java 中变量作用域的一些要点:

  • 一组花括号{}定义一个作用域。
  • 在方法之外的类中定义的变量都可以被所有成员方法使用
  • 当方法与成员具有相同的局部变量时,“this”关键字可用于引用当前类变量

慕源网 » Java变量的作用域

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录