在Java中的局部变量一般指在成员方法中定义的变量,这些变量的作用域就是在方法中,而全局变量,也就是属性,作用域为整个类体。
public class scope01 {
public static void main(String[] args) {
class Cat {
//全局变量,作用域为整个类体。
int age = 10;
public void cry(){
int n = 10;
String name = "Jack";
}
public void eat(){
//在eat方法中可以使用属性age。但是不能使用n和name。
System.out.println(age);
}
}
Cat aa = new Cat();
aa.eat();
}
}
10
Process finished with exit code 0
-
除了属性之外的变量都是局部变量,作用域为定义它的代码块中。
-
全局变量(属性)可以不赋值直接使用,因为有默认值,而局部变量必须赋值后再使用,其没有默认值。
-
属性和局部变量可以重名,访问时遵循就近原则。
public class scope01 {
public static void main(String[] args) {
class Cat {
//全局变量,作用域为整个类体。
int age = 10;
public void cry() {
//可以重名,遵循就近原则。
int age = 20;
String name = "Jack";
System.out.println(age);
}
}
Cat aa = new Cat();
aa.cry();
}
}
20
Process finished with exit code 0
- 在同一个作用域中,比如同一个成员方法中,两个局部变量不能重名。
- 属性生命周期比较长,局部变量生命周期比较短。
- 全局变量(属性)可以被本类使用,或被其他类使用。局部变量只能在本类中对应的方法中使用。
- 全局变量(属性)可以加修饰符,而局部变量是不可以加修饰符的。